Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 从核心数据排序NSMutable数组时,我得到一个错误_Sorting_Ios7_Nsmutablearray - Fatal编程技术网

Sorting 从核心数据排序NSMutable数组时,我得到一个错误

Sorting 从核心数据排序NSMutable数组时,我得到一个错误,sorting,ios7,nsmutablearray,Sorting,Ios7,Nsmutablearray,下面是我在tableViewController中的viewDidLoad方法。当viewDidLoad运行时,会出现此错误 2014-03-03 12:44:54.904 SalesCRM2[30188:70b]-[\u PFArray sortUsingDescriptors:]:发送到实例0x8c45710的选择器无法识别 2014-03-03 12:44:54.931 SalesCRM2[30188:70b]*由于未捕获的异常“NSInvalidArgumentException”而终止

下面是我在tableViewController中的viewDidLoad方法。当viewDidLoad运行时,会出现此错误

2014-03-03 12:44:54.904 SalesCRM2[30188:70b]-[\u PFArray sortUsingDescriptors:]:发送到实例0x8c45710的选择器无法识别 2014-03-03 12:44:54.931 SalesCRM2[30188:70b]*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[\u PFArray sortUsingDescriptors:]:未识别的选择器发送到实例0x8c45710'

在这行代码上

[array sortUsingDescriptors:[NSArray arrayWithObject:sort]];
这里是整个方法

 - (void)viewDidLoad
    {
    [super viewDidLoad];

    JCAppDelegate *appDelegate =
    [[UIApplication sharedApplication] delegate];

    NSManagedObjectContext *context =
    [appDelegate managedObjectContext];

    NSEntityDescription *entityDesc =
    [NSEntityDescription entityForName:@"Customers"
                inManagedObjectContext:context];

    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setEntity:entityDesc];

    NSError *error;
    NSArray *objects = [context executeFetchRequest:request
                                              error:&error];

    NSMutableArray *array = (NSMutableArray *)objects;
    NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"firstName" ascending:YES];
    [array sortUsingDescriptors:[NSArray arrayWithObject:sort]];

    if ([objects count] == 0)
    {
        //_isEmpty = YES;
    }
    else
    {
        //_isEmpty = NO;
        _resultsArray = (NSMutableArray *)objects;



        NSLog(@"resultsArray: %i",[_resultsArray count]);
        //        matches = objects[0];
        //        _address.text = [matches valueForKey:@"address"];
        //        _phone.text = [matches valueForKey:@"phone"];
        //        _status.text = [NSString stringWithFormat:
        //                        @"%lu matches found", (unsigned long)[objects count]];
    }



}

阅读错误消息。它告诉你问题所在。您可以对不可变数组说
排序描述符:
。它是不变的

现在,至于你做错了什么,那就有趣多了!你是说:

NSMutableArray *array = (NSMutableArray *)objects;
也许您认为这会将一个不可变数组变成一个可变数组。没有。你不能通过打字把一个丝绸钱包变成猪耳朵。你可以对编译器撒谎(你确实是这样做的,通过类型转换到一个false类),但是你不能对运行时撒谎。物体是什么,不管你怎么称呼它,它就是什么


如果你想要一个可变数组,你必须创建一个可变数组(例如,通过调用
mutableCopy
)-说一个东西是可变数组是不够的,而事实上它不是。

。所以我的下一个问题是,你能用fetchRequest将信息拉入一个可变数组而不是数组吗?我可能会在上面的回答中补充一点,你可能想在继续之前停下来学习Objective-C,因为你显然对它有一些基本的误解。这是我书中关于这个主题的部分:这是关于可变与不可变的部分: