从“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】:这里sortedFloats
是NSMutableArray
的对象,并且您使用数组键和sortedArrayUsingDescriptors
的NSMutableArray
方法对数组进行排序,返回NSArray
..
所以这里sortedArrayUsingDescriptors
方法的返回类型是NSArray
,并且您将此返回类型数组存储在NSMutableArray
的对象中,名称是sortedFloats
,所以将sortedFloats
作为NSArray
类的对象。
我希望这对你有帮助...
【讨论】:
以上是关于从“nsarray”分配给“nsmutablearray”的不兼容指针类型的主要内容,如果未能解决你的问题,请参考以下文章