2016-03-23 12 views
13

Zuerst sehr zu schätzen Ihre Hilfe. Ich habe gerade Xcode gestern aktualisiert, das swift 2.2 enthält. Ich habe ein paar Probleme gesehen, aber ich habe sie schnell behoben, indem ich den "Was ist neu in Swift 2.2" Themen von Natashatherobot gefolgt ist. Aber es gibt ein Problem, das ich nicht beheben kann. Es handelt sich um fehlbare Initialisierer von UIFont, die in swift 2.2 eingeführt wurden. Attached ist ein einfacher Code, der Fehler in swift 2.2 meldet. Der Fehler wird möglicherweise nicht sofort gemeldet, bis ich das Projekt bereinigt habe.Swift 2.2: Failable Initialisierer in faulen Eigenschaften

lazy var somelabel: UILabel = { 

     let label = UILabel() 
     let font = UIFont(name: "somefont", size: 10) ?? UIFont.systemFontOfSize(10) //this line gave me error 
     label.font = font 
     label.text = "Calculating..." 

     return label 
    }() 

Here is the screenshot of the error

enter image description here

Der Fehler ist: (name: String, Größe: CGFloat) -> UIFont 'ist nicht konvertierbar' (name: String, Größe: CGFloat) -> UIFont?

Ich kann es auf zwei Arten beheben:

Methode 1: Verwenden Sie diese Zeile nicht setzen: let font = UIFont(name: "somefont", size: 10) ?? UIFont.systemFontOfSize(10) in der 'faul Instanziierung' Schließung. (Legen Sie es in berechneten Eigenschaften Berichten keinen Fehler)

Methode 2: anstelle von:

UIFont(name: "somefont", size: 10) 

Verwendung der unten statt (aber ich glaube nicht, das der richtige Ansatz sein sollte, weil es die initializer macht mehr „objc“ Stil):

UIFont.init(name: "somefont", size: 10) 

Aber ich verstehe immer noch nicht, warum es mir Fehler in der faulen Immobilien Schließung berichten würde. Ich werde sehr geschätzt, wenn jemand mir einige Erklärungen geben kann.

+1

Wirklich? Das explizite "init" macht das funktioniert? Du bist ein Genie! Du solltest das nur als Antwort geben. Dies ist ein schwerwiegender Fehler, und Sie haben bereits eine Problemumgehung gefunden. – matt

+1

Oh, und wenn Sie das Problem reproduzieren können, melden Sie bitte einen Fehlerbericht mit Apple. (Ich kann es nicht reproduzieren, auch wenn es oft auftaucht.) – matt

+0

Danke @matt, ich denke du kannst das Problem definitiv replizieren, indem du das Stück Code verwendest, das ich angehängt habe, wenn du dein Projekt gereinigt hast. Ich bin mir nicht sicher, ob dies ein Fehler oder ein Standardverhalten für faule Eigenschaften in swift 2.2 ist. Zur gleichen Zeit, wenn dies nur auf meinem xcode passiert, werde ich versuchen, eine saubere Installation statt – fans3210

Antwort

2

Dies könnte ein Fehler der neuesten Version xcode sein. Diejenigen, deren Projekt vor dem Upgrade eingerichtet wurde, könnten dieses Problem haben. Jeder, der das Glück hat, sich einem solchen Problem zu stellen, kann versuchen, ein neues Projekt in einer schnellen 2.2-Umgebung zu starten.

+1

Dies liefert keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag. - [Aus Bewertung] (/ review/low-quality-posts/11741417) – veljasije

+0

Bitte nicht "Danke" als Antwort hinzufügen. Stattdessen, ** [akzeptiere die Antwort] (http://stackoverflow.com/help/accepted-answer) **, die du am hilfreichsten fandst. - [Aus Bewertung] (/ review/low-quality-posts/11741417) – PVitt

+0

@PVitt. OK, ich verstehe. Da dieses Problem ein Fehler von xcode sein könnte, werde ich meine Lösung ein wenig bearbeiten. – fans3210