2015-09-15 8 views
5

"seçenekleri" doğru kullanımı: Ben beni anlatıyor anlamakNSTextTab - Geçenlerde Xcode 7 kullanmaya başladı ve ortak bir uyarı gibi görünen aldık

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

, ama emin değilim neyi doğru çözüm benim özel sorunumdur.

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 
:

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

Şimdi, onun "Programlama iOS 8" kitabı (GitHub'dan yayınlanan) bu Matt Neuberg'in en Örneğin içine bakarak, aşağıdaki bakın: Burada uyarı oluştuğu çizgi

Anlatabildiğim kadarıyla bu, metni ayarlıyor, böylece dizelerdeki ondalık noktalar hizalı olacak. Harika. İşe yarar. İhtiyacım olan şey değil. Sadece sol taraftaki bir sekmeye sahip olmaya çalışıyorum, belirli ve tutarlı bir girinti.

kodumu "düzeltmek" için (yani uyarı yok almak), buna kodumu değiştirdik:

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

Bu işe görünmektedir, ama bir süper kludgy iş gibi hissediyor -etrafında. Benim NSTextTab benim anlayışım yanlış mı? Bunu düzeltmek için yol nedir?

+0

Aynı düzeltmeyi de kullanıyor. @ {NSFontAttributeName: font, NSParagraphStyleAttributeName: paragraphStyle} gibi diğer metin öğeleriyle seçenekler parametrelerini kullandım. Burada neyin dahil edilmesi gerektiğine dair bir fikriniz yok. –

cevap

3

InitWithTextAlignment belgelerinde listelenen tek seçenek: location: options: NSTabColumnTerminatorsAttributeName ve isteğe bağlıdır.

Seçenekler: NS_ASSUME_NONNULL_BEGIN/END makrolarının kullanılmasıyla parametre, NSParagraphStyle.h başlık dosyasında null olarak işaretlenir.

Bu iki gerçekleri birleştirin ve boş bir NSDictionary geçirme çözümünüz derleyici uyarısını çözmenin uygun yoludur.

İlgili konular