I 놀이터에 다음 코드가 있습니다setValueForKeys는 스위프트
class Pokemon : NSObject {
var name :String!
var id :Int?
var imageURL :String!
var latitude :Double!
var longitude :Double!
init(dictionary :[String:Any]) {
super.init()
setValuesForKeys(dictionary)
}
}
let dict :[String:Any] = ["name":"John","imageURL":"someimageURL","latitude":45.67]
let pokemon = Pokemon(dictionary: dict)
setValuesForKeys에 대한 호출 후 만들어가 다음과 같은 말에서 예외가 발생합니다 :
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__lldb_expr_13.Pokemon 0x6000000ffd00> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key latitude.'
내가 키가를 "위도"이지만 어떤 이유로 그것이 그것을 찾을 수 없습니다. 어떤 아이디어라도!
해결책 : 선택한 답변을 읽고 여기에 업데이트 된 코드 : 할 수 없습니다 코딩 그래서 키 - 값
class Pokemon : NSObject {
var name :String!
var id :Int = 0
var imageURL :String!
var latitude :Double = 0
var longitude :Double = 0
init(dictionary :[String:Any]) {
super.init()
setValuesForKeys(dictionary)
}
}
왜 그런 이니셜 라이저를 만드시겠습니까? 적절한 이니셜 라이저를 만들거나 속성을 직접 설정하지 않는 이유는 무엇입니까? – rmaddy
절대적으로! 그러나 나는 위의 코드에서 내가 뭘 잘못하고 있는지 알아 내고 싶다. 또한이 이니셜 라이저는 많은 특성을 설정하는 데 도움이됩니다. –
어때 [이 하나] (http://stackoverflow.com/q/26366082/3476191) 그럼? – NobodyNada