我在头文件中定义了一个NSArray,如下所示:
@property (nonatomic, retain) NSArray *ages;
在我的实现中,我想设置这个变量:
ages = [self setAges:[ageValues allKeys]];
'ageValues'是一个NSDictionary。所以我所做的只是将键数组设置为我自定义的数组。奇怪的是,我收到以下错误消息:
从不兼容的类型'void'
分配'NS Array *'但我在哪里可以找到无效的东西?在我的opionion我只是设置另一个数组([ageValues allKeys)到我自己的数组,我找不到任何无效的???
答案 0 :(得分:4)
setAges:
方法是一种返回void
的方法,换句话说:它返回 nothing (甚至不是nil
或其他东西;它实际上不是返回任何东西)。现在你不能为变量分配“无”。
话虽如此,你的代码想要做两次同样的事情。你想做的只是:
self.ages = [ageValues allKeys];
或:
[self setAges:[ageValues allKeys]];
它们完全相同,但使用不同的语法(编译器将第一个转换为第二个)。
答案 1 :(得分:1)
setAges 是 void 方法,因为它是一个setter。因此,它返回无效,然后您尝试将其分配给年龄成员。您只需要调用 setAges 。
[ self setAges:[ ageValues allKeys ] ];
答案 2 :(得分:1)
self.ages = [ageValues allKeys];
要么
ages = [[ageValues allKeys] retain];
答案 3 :(得分:1)
[self setAges:[ageValues allKeys]]; returns void.
如果您已在ages
中合成了.m
属性,请执行以下操作:
@synthesize ages;
自动为您生成setter,所以您需要做的就是
self.ages = [ageValues allKeys];