Sadece buna eklemek için, çünkü ben de bu hatayı alıyordum. Tüm bu cevapları incelemek çoğunlukla kullanıcı arayüzü ve film şeridi öğeleriyle çalışmak için geçerlidir. Orijinal posterin kullanıcı arayüzü ile çalıştığını biliyorum ama bu hatanın olası nedenlerini ararken çoğunlukla tüm sorular bu soruya geri dönerek diğerlerinin kopya olarak kapatılması veya sadece bir hikaye tahtasındaki şeyleri bağlamayla ilgili sorunların olmasıyla sonuçlanacak. çözümümü ekle.
Swift 2'de bir web servisini kodlamaya çalışıyordum. Gerekli tüm proxy nesnelerini ve taslaklarını oluşturmuştum. Döndürülen XML'de dolaşırken, her şeyden gelen NSObject
ve setValue:forKey
bunları kullanan nesnelerimi dinamik olarak somutlaştırıyordum . Her zaman setValue:forKey
bu hata ile havaya uçurdu bir özelliği ayarlamak çalıştı.
Ben hiçbir zaman bu (örn uğraşıyordu her tip için bir switch deyimi vardı Bool?
, CShort?
, String?
) ve geçtim ve tek tip nesne üzerinde ne teslim ve sonra bu tür değer dönüştürülür ve bunu belirlemeye çalıştı her XML düğüm için setValue:forKey
.
Sonunda tüm bu setValue:forKey
satırları yorumlamaya başladım ve default
switch deyim durumumun işe yaradığını gördüm String?
.
Sonunda bunu anladım olamaz ile opsiyonel hızlı türlerini kullanmak setValue:forKey
onlar gibi bir Objective-C tipi doğrudan eşleme yoksa String?
veya NSNumber?
. Doğrudan bir eşleme olduğu CShort?
için her türünü değiştirdim NSNumber?
. Çünkü Bool?
benim durumumda kullanmak Bool
ve başlatmak benim için iyi oldu false
. Diğerleri bu lükse sahip olmayabilir.
Her neyse, bu kadar umut verici bir baş ağrısı, benzer bir sorunu olan ve bu soruya yönlendirilmeye ve kendilerine "Kullanıcı arayüzünde hiçbir şey yapmıyorum!"
Son olarak bir kez daha yinelemek için Anahtar / değer Kodlaması seçeneklerle çalışmaz. Aşağıda bir yerde buldum ama bunu kim yayınladı özür dilerim nerede unuttum ve bunu nerede buldum hatırladı, ancak hayatımı kurtardı kredi verecek:
KVC'yi İsteğe Bağlı Int özelliğinde kullanamazsınız, çünkü KVC Kakao / Objective-C'dir ve Objective-C bir İsteğe Bağlı Int göremez - Objective-C ile köprülenmez. Objective-C yalnızca Objective-C ile köprülenen türleri görebilir:
NSObject'ten türetilen sınıf türleri
@objc ile karşılaşan sınıf türleri
Köprülenen hızlı yapılar