我需要反向(按降序排序)NSMutablearray。我尝试了以下代码并且它可以工作,但是收到了警告。我怎么能删除警告?
NSMutablearray *resStatusArray;
[resStatusArray sortUsingSelector:@selector(compare:)];
resStatusArray=[[resStatusArray reverseObjectEnumerator] allObjects];
Warning:Incompitable pointer types assigning to 'NSMutablearray*_strong' from ' NSarray *'
答案 0 :(得分:7)
user1118321在说明中是正确的。要修复它,您将创建一个新的可变数组。我怀疑这比演员更安全。
resStatusArray = [NSMutableArray arrayWithArray:[[resStatusArray reverseObjectEnumerator] allObjects]];
答案 1 :(得分:4)
allObjects
方法返回NSArray*
,而不是NSMutableArray*
,因此编译器会告诉您对NSMutableArray*
变量的分配不正确。
答案 2 :(得分:0)
如果您确定自己在做什么,可以使用演员:
resStatusArray=(NSMutableArray*_strong)[[resStatusArray reverseObjectEnumerator] allObjects];
但是,我怀疑这在语义上是正确的。
答案 3 :(得分:0)
将其设为等于:
[NSMutableArray arrayWithArray:[[arrayNameToReverse reverseObjectEnumerator] allObjects]];
这实际上是从旧的可变数组中创建一个新数组,但是相反。它起作用的原因是因为NSMutableArray是NSArray的子类。因此,反转数组的代码是:
resStatusArray = [NSMutableArray arrayWithArray:[[resStatusArray reverseObjectEnumerator] allObjects]];