设置某些指针类型的属性

时间:2013-07-29 21:43:37

标签: objective-c

如果我以这种方式定义了财产:

@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; 因为当我无法使用'硬编码'设置属性值时,我处于这种情况。我需要更通用的东西。

2 个答案:

答案 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 *