0

如果我以这种方式定义了属性:

@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 属性值的方法->c.prop_int_ptr = some_int_ptr; 因为我处于无法使用属性值的“硬编码”设置的情况。我需要更通用的东西。

4

2 回答 2

2

键值编码不支持任意指针。您的属性是否需要是 int 指针?如果可以,请将其声明为NSNumber

@property (strong, nonatomic) NSNumber *prop_int

该属性将符合键值对。

来源: http: //lists.apple.com/archives/cocoa-dev/2006/May/msg00343.html

于 2013-07-29T22:01:22.667 回答
0

您应该使用 NSNumber* 而不是 int*

于 2013-07-29T22:03:55.360 回答