如果我以这种方式定义了财产:
@property (atomic) int prop_int;
我可以这样设置它的值:
[c setValue:[NSNumber numberWithInt:12345] forKey:@"prop_int"];
但如果我有属性指针:
@property (assign) int *prop_int_ptr;
我尝试以这种方式设置此属性的值...
[c setValue:[NSValue valueWithPointer:(void*)int_ptr] forKey:@"prop_int_ptr"];
功能无效。我收到了以下错误:
[<Car 0x10010a360> valueForUndefinedKey:]: this class is not key value coding-compliant for the key prop_int_ptr.'
有没有人知道在没有直接设置的情况下设置此prop_int_ptr属性值的方法是什么?&gt; c.prop_int_ptr = some_int_ptr;
因为当我无法使用'硬编码'设置属性值时,我处于这种情况。我需要更通用的东西。
答案 0 :(得分:2)
键值编码不支持任意指针。您的属性是否需要是int指针?如果可以,请将其声明为NSNumber
:
@property (strong, nonatomic) NSNumber *prop_int
该属性将符合键值。
来源:http://lists.apple.com/archives/cocoa-dev/2006/May/msg00343.html
答案 1 :(得分:0)
您应该使用NSNumber *而不是int *