从“nsarray”分配给“nsmutablearray”的不兼容指针类型

Posted

技术标签:

【中文标题】从“nsarray”分配给“nsmutablearray”的不兼容指针类型【英文标题】:incompatible pointer types assigning to 'nsmutablearray ' from 'nsarray ' 【发布时间】:2012-12-13 05:53:20 【问题描述】:
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"self" ascending:YES];

sortedFloats = [Arr_distance sortedArrayUsingDescriptors:
                    [NSMutableArray arrayWithObject:sortDescriptor]];

sortedFloats 是 NSMutableArray,Arr_distance 也是 NSMutableArray

我收到警告Incompatible pointer types assigning to 'NSMutableArray ' from 'NSArray ' 仍然结果是正确的,但警告是关于什么的?

【问题讨论】:

【参考方案1】:

将您的 sortedFloats 设为 NSArray 而不是 NSMutableArray。你会发现你的警告消失了。

享受编程

【讨论】:

【参考方案2】:

该代码中有两个问题:

    sortedArrayUsingDescriptors 的参数类型是 NSArray 您传递的是 NSMutableArray sortedArrayUsingDescriptors 的返回类型是 NSArray,您将其分配给 NSMutableArray 对象

检查方法签名:

- (NSArray *)sortedArrayUsingDescriptors:(NSArray *)sortDescriptors

【讨论】:

【参考方案3】:

sortedArrayUsingDescriptors: 中,您应该传递的默认对象是NSArray。当您传递NSMutableArray 时,您会收到警告。

根据文档:

- (NSArray *)sortedArrayUsingDescriptors:(NSArray *)sortDescriptors

【讨论】:

【参考方案4】:

这里sortedFloatsNSMutableArray 的对象,并且您使用数组键和sortedArrayUsingDescriptorsNSMutableArray 方法对数组进行排序,返回NSArray..

所以这里sortedArrayUsingDescriptors 方法的返回类型是NSArray,并且您将此返回类型数组存储在NSMutableArray 的对象中,名称是sortedFloats,所以将sortedFloats 作为NSArray 类的对象。 我希望这对你有帮助...

【讨论】:

以上是关于从“nsarray”分配给“nsmutablearray”的不兼容指针类型的主要内容,如果未能解决你的问题,请参考以下文章

如何将 sqlite3 表分配给 nsarray

通过取消引用更改 NSArray 中的值?

NSArray 的值,希望按字母顺序显示在部分中。如何分配到正确的部分?

当一个对象被分配给另一个对象时会发生啥?

从 UIViewController 传递 NSArray

将数据分配给 UILabel 后 UITableViewCell 显示不正确的数据