2015-09-15 11 views
5

recente ho cominciato ad usare Xcode 7 e hanno ottenuto quello che sembra essere un avvertimento comune:NSTextTab - Uso corretto delle "opzioni"

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

capisco cosa mi sta dicendo, ma io non sono sicuro di quello che la soluzione corretta è per il mio particolare problema. Ecco la linea in cui l'avviso si sta verificando:

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

Ora, esaminando l'esempio di Matt Neuberg di questo nel suo "Programmazione iOS 8" libro (pubblicato su GitHub), compaiono i seguenti:

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 

Da quello che posso dire, questo è impostare il testo in modo che i punti decimali nelle stringhe siano quelli che vengono allineati. Grande. Utile. Non è quello di cui ho bisogno. Sto solo cercando di avere una scheda sul lato sinistro per dare un rientro specifico e coerente.

per "fissare" il mio codice (ad esempio, ottenere il monito a scomparire), ho cambiato il mio codice a questo:

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

Questo sembra funzionare, ma ci si sente come un super-lavoro kludgy -in giro. La mia comprensione di NSTextTab è errata? Qual è il a destra come risolvere questo problema?

+0

Anche utilizzando la stessa correzione. Ho usato i parametri delle opzioni con altri elementi di testo come @ {NSFontAttributeName: font, NSParagraphStyleAttributeName: paragraphStyle}. Non ho idea di cosa dovrebbe essere incluso qui. –

risposta

3

L'unica opzione elencata nella documentazione per initWithTextAlignment: percorso: opzioni: è NSTabColumnTerminatorsAttributeName ed è facoltativo.

Opzioni: il parametro non è contrassegnato nel file di intestazione NSParagraphStyle.h utilizzando le macro NS_ASSUME_NONNULL_BEGIN/END.

Combina questi due fatti e la soluzione per passare un NSDictionary vuoto è il modo corretto per risolvere l'avviso del compilatore.