iPhone:反转NSMutablearray时收到警告

3

我需要对一个NSMutablearray进行反向排序(按降序排列)。我尝试了以下代码并且它可以工作,但是我得到了一个警告。我应该如何去除这个警告?

NSMutablearray *resStatusArray;

[resStatusArray sortUsingSelector:@selector(compare:)];

    resStatusArray=[[resStatusArray reverseObjectEnumerator] allObjects];
Warning:Incompitable pointer types assigning to 'NSMutablearray*_strong' from ' NSarray *'
4个回答

7

user1118321在解释中是正确的。要修复它,您需要创建一个新的可变数组。我怀疑这比强制转换更安全。

resStatusArray = [NSMutableArray arrayWithArray:[[resStatusArray reverseObjectEnumerator] allObjects]];

4

allObjects 方法返回的是 NSArray* 类型,而不是 NSMutableArray* 类型,因此编译器提示你将其赋值给一个 NSMutableArray* 变量是不正确的。


0

如果你确定自己在做什么,可以使用强制类型转换:

resStatusArray=(NSMutableArray*_strong)[[resStatusArray reverseObjectEnumerator] allObjects];

然而,我怀疑这是否在语义上是正确的。


0

将其设置为相等于:

[NSMutableArray arrayWithArray:[[arrayNameToReverse reverseObjectEnumerator] allObjects]];

这实际上是从旧的可变数组创建一个新的数组,但是顺序相反。它能够工作的原因是NSMutableArray是NSArray的子类。所以,你用于反转数组的代码将是:

resStatusArray = [NSMutableArray arrayWithArray:[[resStatusArray reverseObjectEnumerator] allObjects]];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接