排序后设置NSMutableArray

时间:2011-06-23 22:11:56

标签: iphone uitableview nssortdescriptor

我有一个在UITableView中显示的标记对象的NSMutableArray。我有一个segmentedControl来对数据进行排序。我知道我按名称排序时,我按照这样的方式来记录我的信息:

 // Create sort descriptors
    NSSortDescriptor *descriptor = [[[NSSortDescriptor alloc] initWithKey:@"Name" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)] autorelease];
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:descriptor, nil];
    NSArray *sortedArray = [self.MarkersList sortedArrayUsingDescriptors:sortDescriptors];

    for (Marker *m in self.MarkersList) {
        NSLog(@"-Name: %@", m.Name);
    }
    for (Marker *m in sortedArray) {
        NSLog(@"sorted - Name: %@", m.Name);
    }

然后我不知道为UITableView重新加载数据的最佳方法。我以为我可以在下面做,但这基本上只是删除所有对象,现在我在self.MarkersList中没有任何内容。

  if ([segmentControl selectedSegmentIndex] == 0) {
        if (self.MarkersList != nil) {
            [self.MarkersList removeAllObjects];

            [self.MarkersList arrayByAddingObjectsFromArray:sortedArray];
            [self.MarkersTableView reloadData];
            NSLog(@"%s", __FUNCTION__);

            for (Marker *m in self.MarkersList) {
                NSLog(@"Name: %@", m.Name);
            }   
        }        
    }

我肯定在这一点上遗漏了一些明显的东西。任何帮助,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

替换:

[self.MarkersList arrayByAddingObjectsFromArray:sortedArray];

使用:

[self.MarkersList addObjectsFromArray:sortedArray];

发现错误并高兴!