我有一個String屬性的對象。我必須使用鍵值編碼從外部設置該屬性。因此,我正在使用self.setValue(value, forKeyPath: key)
。斯威夫特KVC設置NSNumber值爲字符串鍵
這裏的問題是,我可以設置一個NSNumber作爲導致崩潰的消息-[__NSCFNumber length]: unrecognized selector sent to instance
的值。我如何在值和屬性之間進行類型檢查以避免崩潰?
值給我NSObject回作爲dynamicType。 和obj.valueForKey(key).dynamicType
讓我回到AnyObject?
我試了一下,並且可以做的是一樣的東西:
if (obj.valueForKey(key) is String && value is String) {...}
的事情是,我的對象有明顯多於一個String屬性,它具有許多特性。而我試圖做的是遍歷所有屬性並將它們設置爲來自Web服務的特定值。現在,我需要一個通用的數據類型檢查,看看是否有類型不匹配,像
if (obj.valueForKey(key).realtype == value.realtype) {...}
爲什麼你需要使用'setValue:forKeyPath:'而不是直接設置值? – Abizern
很高興能夠看到你的課...... – sergio
,因爲這是一個解析器的一部分,它從一個objc庫中檢索數據並在幾個swift對象中設置這些值。我只有對象的父類不是實際的類。我不想將它轉換爲實際的類,因爲有很多,我需要一個巨大的if/switch語句才能通過它們。 – Se7enDays