Swift3.X → Swift4.X 移行の時に
reflectionを使っているところで以下のようなビルドエラーが出て困る。
"this class is not key value coding-compliant for the key Name."
"This class is not key value coding compliant"
具体的なソースでいうとたぶんこんな感じのところ
class Person : NSObject
{
var Name:String = ""
}
let taro = Person()
taro.setValue("山田太郎", forKey: "Name") <<<<<ここでエラー!!
と、setValueで値を格納しているところで上記のようなエラーが出ると思う。
解決策だけさらっと書くと
@objcMembers class Person : NSObject
{
var Name:String = ""
}
のように、"@objcMembers"をclass定義の頭につけてやる。
Objective-Cから離れたいのになぜか離れられないSwift、中の人は何か苦労があるんだろうな・・・
Swift4からはJsonのエンコードではCodableが使えるようになったのでリフレクションを使う場面は少し減るかも。