NSMutableArray *sortedReleases = [theReleases sortedArrayUsingComparator:^(id a, id b)
我得到以下内容:
不兼容的指针类型初始化'NSMutableArray *',表达式为'NSArray *'
我必须将sortedReleases作为NSMutableArray。我如何克服它?
由于
答案 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
内联电话。