NSArray上有什么'无效'?

时间:2011-12-07 10:13:44

标签: objective-c ios cocoa-touch

我在头文件中定义了一个NSArray,如下所示:

@property (nonatomic, retain) NSArray *ages;

在我的实现中,我想设置这个变量:

ages = [self setAges:[ageValues allKeys]];

'ageValues'是一个NSDictionary。所以我所做的只是将键数组设置为我自定义的数组。奇怪的是,我收到以下错误消息:

从不兼容的类型'void'

分配'NS Array *'

但我在哪里可以找到无效的东西?在我的opionion我只是设置另一个数组([ageValues allKeys)到我自己的数组,我找不到任何无效的???

4 个答案:

答案 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];