iPhone:反转NSMutablearray时收到警告
我需要反向(降序排序)NSMutablearray。我如何删除警告iPhone:反转NSMutablearray时收到警告,iphone,objective-c,ios,nsmutablearray,warnings,Iphone,Objective C,Ios,Nsmutablearray,Warnings,我需要反向(降序排序)NSMutablearray。我如何删除警告 NSMutablearray *resStatusArray; [resStatusArray sortUsingSelector:@selector(compare:)]; resStatusArray=[[resStatusArray reverseObjectEnumerator] allObjects]; allObjects方法返回的是一个NSArray*,而不是一个NSMutableArray*,因此编
NSMutablearray *resStatusArray;
[resStatusArray sortUsingSelector:@selector(compare:)];
resStatusArray=[[resStatusArray reverseObjectEnumerator] allObjects];
allObjects
方法返回的是一个NSArray*
,而不是一个NSMutableArray*
,因此编译器会告诉您对NSMutableArray*
变量的赋值不正确。如果您确定要执行的操作,可以使用强制转换:
resStatusArray=(NSMutableArray*_strong)[[resStatusArray reverseObjectEnumerator] allObjects];
然而,我怀疑这在语义上是否正确。user1118321的解释是否正确。要修复它,您需要创建一个新的可变数组。我怀疑这比石膏更安全
resStatusArray = [NSMutableArray arrayWithArray:[[resStatusArray reverseObjectEnumerator] allObjects]];
resStatusArray = [NSMutableArray arrayWithArray:[[resStatusArray reverseObjectEnumerator] allObjects]];
将其设置为等于:
[NSMutableArray arrayWithArray:[[arrayNameToReverse reverseObjectEnumerator] allObjects]];
这实质上是从旧的可变数组创建一个新数组,但相反。它工作的原因是因为NSMutableArray是NSArray的一个子类。因此,反转数组的代码是:
resStatusArray = [NSMutableArray arrayWithArray:[[resStatusArray reverseObjectEnumerator] allObjects]];