我收到错误:不兼容的指针类型初始化' NSMutableArray *'表达式为' NSArray?

时间:2011-12-12 04:09:07

标签: iphone objective-c ios nsmutablearray

NSMutableArray *sortedReleases = [theReleases sortedArrayUsingComparator:^(id a, id b)

我得到以下内容:

不兼容的指针类型初始化'NSMutableArray *',表达式为'NSArray *'

我必须将sortedReleases作为NSMutableArray。我如何克服它?

由于

2 个答案:

答案 0 :(得分:6)

这应该是我认为的技巧(用浏览器编写) - NSMutableArray继承自NSArray,因此你可以使用arrayWithArray构造函数。

NSMutableArray *sortedReleases = [NSMutableArray arrayWithArray:[theReleases sortedArrayUsingComparator:^(id a, id b)]]

答案 1 :(得分:1)

sortedArrayUsingComparator返回NSArray*,您需要NSMutableArray*。在ObjC中,可变类型继承自不可变类型,因此您不能只使用NSArray*。您需要一些东西来取走NSArray*并为您提供等同的NSMutableArray*。在这种情况下,NSMutableArray arrayWithArray方法将执行此操作。

尝试类似:

NSMutableArray *immutableSortedReleases = [theReleases sortedArrayUsingComparator:^(id a, id b)...]
NSMutableArray *sortedReleases = [NSMutableArray arrayWithArray:immutableSortedReleases];

如果足够清楚,请跳过immutableSortedReleases,并将arrayWithArray内联电话。