2015-09-15 22 views
5

ich vor kurzem mit Xcode begonnen haben 7 und bekommen haben, was eine gemeinsame Warnung zu sein scheint:NSTextTab - Korrekte Verwendung von „Optionen“

Null passed to a callee that requires a non-null argument 

Ich verstehe, was es sagt mir, aber ich bin nicht sicher, was Die korrekte Lösung ist für mein spezielles Problem. Hier ist die Linie, wo die Warnung auftritt:

NSTextTab *tab = [[NSTextTab alloc] 
        initWithTextAlignment:NSTextAlignmentLeft 
            location:10.0f 
            options:nil]; 

Nun Blick in Matt Neubergs Beispiel dafür in seiner „Programming iOS 8“ Buch (veröffentlicht auf GitHub), sehe ich folgendes:

let s = "Onions\t$2.34\nPeppers\t$15.2\n" 
let mas = NSMutableAttributedString(string:s, attributes:[ 
// lines omitted... 
let terms = NSTextTab.columnTerminatorsForLocale(NSLocale.currentLocale()) 
let tab = NSTextTab(textAlignment:.Right, location:170, options:[NSTabColumnTerminatorsAttributeName:terms]) 
// lines omitted 
self.tv.attributedText = mas 

Was ich sagen kann, ist das Einrichten des Textes, so dass die Dezimalpunkte in den Strings ausgerichtet werden. Groß. Sinnvoll. Nicht was ich brauche. Ich versuche nur einen Tab auf der linken Seite zu haben, der einen bestimmten und konsistenten Eindruck gibt.

zu „reparieren“ mein Code (dh erhält die Warnung verschwinden), ich habe meinen Code dies geändert:

NSTextTab *tab = [[NSTextTab alloc] initWithTextAlignment:NSTextAlignmentLeft location:10.0f options:[NSDictionary dictionary]]; 

Dies scheint zu arbeiten, aber es fühlt sich an wie eine Super-kludgy Arbeit -um. Ist mein Verständnis von NSTextTab falsch? Was ist das Recht Weg, um dies zu beheben?

+0

Auch mit dem gleichen Fix. Ich habe Optionsparameter mit anderen Textelementen wie @ {NSFontAttributeName: font, NSParagraphStyleAttributeName: paragraphStyle} verwendet. Hab keine Ahnung was hier enthalten sein soll. –

Antwort

3

Die einzige in der Dokumentation für initWithTextAlignment aufgelistete Option: location: options: ist NSTabColumnTerminatorsAttributeName und ist optional.

Der Parameter options: wird in der Headerdatei NSParagraphStyle.h mithilfe der Makros NS_ASSUME_NONNULL_BEGIN/END mit nichtnull gekennzeichnet.

Kombinieren Sie diese beiden Fakten und Ihre Lösung, ein leeres NSDictionary zu übergeben, ist der richtige Weg, um die Compiler-Warnung zu lösen.

Verwandte Themen