我得到错误:不兼容的指针类型初始化'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呼叫在线。