如何在iPhone中避免“NSInternalInconsistencyException”?

时间:2010-02-20 10:25:49

标签: iphone sorting nsmutablearray

我正在排序一个可变数组。对于排序我使用:

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"pubDate" ascending:NO]; 
[recent sortUsingDescriptors:[NSArray arrayWithObjects:descriptor, nil]];  
recent1 = [recent sortedArrayUsingDescriptors:descriptor];
[descriptor release];

我收到此错误:

  

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '*** -[NSCFArray replaceObjectAtIndex:withObject:]: mutating method sent to immutable object'

该行

recent1 = [recent sortedArrayUsingDescriptors:descriptor];

显示警告

  • “传递来自不同目标c类型的'sortedarrayusingdescritors'的参数1”和
  • “从不同的目标c类型分配”

在我的代码中,recentrecent1都是NSMutable数组。我哪里出错?

1 个答案:

答案 0 :(得分:1)

recent1 = [recent sortedArrayUsingDescriptors:descriptor];

必须是:

recent1 = [recent sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor, nil]];

虽然我不知道你为什么要对你已经在上面直线上用相同排序描述符排序的数组进行排序。