を失敗している:setValuesForKeysへの呼び出しが行われると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)
それは次のように言って例外をスロー:
*** 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.'
私は鍵を持っています"緯度"しかし何らかの理由でそれを見つけることができません。何か案は!
SOLUTION:更新されたコード選択した答えを読み、ここにある:
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
絶対に!しかし、私は上記のコードで私が間違っていることを見つけたい。また、多くのプロパティを設定している場合は、この初期化子が役立ちます。 –
[this one](http://stackoverflow.com/q/26366082/3476191)はどうですか? – NobodyNada