我得到错误:不兼容的指针类型初始化'NSMutableArray *'与类型'NSArray的表达?
问题描述:
NSMutableArray *sortedReleases = [theReleases sortedArrayUsingComparator:^(id a, id b)
我得到以下:我得到错误:不兼容的指针类型初始化'NSMutableArray *'与类型'NSArray的表达?
不相容指针类型初始化 '的NSMutableArray *' 与类型的表达式 '的NSArray *'
我必须有sortedReleases作为NSMutableArray里。我如何克服它?
感谢
答
这应该做我认为伎俩(写在浏览器) - 从NSMutableArray中的NSArray继承,这样你就可以使用arrayWithArray
构造。
NSMutableArray *sortedReleases = [NSMutableArray arrayWithArray:[theReleases sortedArrayUsingComparator:^(id a, id b)]]
答
sortedArrayUsingComparator
返回NSArray*
,你想有一个NSMutableArray*
。在ObjC中,可变类型从不可变类型继承,所以你不能只使用NSArray*
。你需要一些东西来取你的NSArray*
,并给你相当的NSMutableArray*
。在这种情况下,NSMutableArray
arrayWithArray方法将做到这一点。
尝试类似:
NSMutableArray *immutableSortedReleases = [theReleases sortedArrayUsingComparator:^(id a, id b)...]
NSMutableArray *sortedReleases = [NSMutableArray arrayWithArray:immutableSortedReleases];
或者,如果足够清晰,跳过对immutableSortedReleases
,并把arrayWithArray
呼叫在线。