我發現在Swift中使用KVC會導致很多問題,尤其是對於可選屬性。使用KVC的Swift可選屬性導致崩潰
這裏是我的具體的問題:
這裏是一個名爲人類。它有一個名爲年齡的常規屬性,以及名爲ageOptional的可選(Int)屬性。
class Person: NSObject {
var age: Int
var ageOptional: Int?
override init(age: Int){
self.age = 0
}
}
現在,我用KVC在人的實例:
//new a instance
var person = Person()
//kvc for normal property: it work well
person.setValue(28, forKeyPath: "age")
//but, this time ,it doesn't work well!!!!
person.setValue(28, forKeyPath: "ageOptional")
應用崩潰了,這裏是個例外:
2015年7月11日11:17:31.546 CFRuntime [4646:607] ***由於未捕獲的異常'NSUnknownKeyException',原因:'[setValue:forUndefinedKey:]:終止應用程序,該類不是關鍵值編碼兼容關鍵ageOptional。
我發現,如果一個屬性是可選的,KVC找不到密鑰。但是,我無法找到可選屬性的有用鍵,並解決了這種情況。
刪除中文字符,這真的沒有必要,英文是人們在這裏使用的。並且真的不需要多個'!'字符。清晰並且格式良好的問題會得到答案。 –
[的setValue:forUndefinedKey:] –
charlin