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
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.
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
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
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