使用不兼容类型void的表达式初始化NSArray * _strong

时间:2013-12-04 10:11:37

标签: ios objective-c nssortdescriptor

当我尝试在表格视图中对来自Web服务的数据进行排序时,我引用了this链接。我的第一个问题是我们可以在可变数组中对数据进行排序吗?我在以下代码中遇到此编译器错误。

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"Name" ascending:YES];
NSArray *sortArrayWithObject = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray = [tempArray sortUsingDescriptors:sortArrayWithObject]; // error

tempArrayNSMutableArray而不是NSArray

3 个答案:

答案 0 :(得分:3)

问题是因为一个愚蠢的错误。我修改了如下所示的API调用,它现在可以正常工作。

NSArray *sortedArray = [tempArray sortedArrayUsingDescriptors:sortArrayWithObject];

答案 1 :(得分:0)

方法sortUsingDescriptors:返回void,这就是您收到此消息的原因。发送邮件的NSMutableArray(在您的情况下为tempArray)由sortUsingDescriptors:方法直接修改。

答案 2 :(得分:0)

它返回void,您期待NSArray

- (void)sortUsingDescriptors:(NSArray *)sortDescriptors

您的代码应为:

[tempArray sortUsingDescriptors:sortArrayWithObject]; 

上面将 使用给定的排序描述符数组对接收数组(tempArray)进行排序。