Cocoa KVC:"类不符合关键值编码"

Mel*_*emi 2 cocoa cocoa-touch objective-c key-value-coding

我正在尝试用KVC更新一些属性.这些属性已经合成.

这条线有效:

myObject.value = intValue;
Run Code Online (Sandbox Code Playgroud)

这不起作用:

[self setValue:[NSNumber numberWithInt:intValue] forKey:@"myObject.value"];
Run Code Online (Sandbox Code Playgroud)

并且爆发: 由于未捕获的异常'NSUnknownKeyException'终止应用程序,原因:'[<MyViewController 0xd1cec0> setValue:forUndefinedKey:]:此类与密钥myObject.value不符合密码值编码.

然而,该方法(awakeFromNib)的其他实例还可以对setValue:forKey:calls做出很好的响应.唯一的区别是这个特定的实例是在IB中创建和连接的.

Bar*_*ark 9

您不能将键路径作为第二个参数传递给-[NSObject setValue:forKey:].您想要使用setValue:forKeyPath::

[self setValue:[NSNumber numberWithInt:intValue] forKeyPath:@"myObject.value"];
Run Code Online (Sandbox Code Playgroud)

我的理解是setValue:forKey:作为性能优化提供.由于它不能采用密钥路径,因此不必解析密钥字符串.


Chu*_*uck 7

它告诉你这不是该对象的有效键,实际上它不是:"myObject.value"是一个键路径,而不是一个键.