【发布时间】:2011-06-23 22:11:56
【问题描述】:
我有一个 NSMutableArray 的 Marker 对象,它们显示在 UITableView 中。我有一个 segmentedControl 来对数据进行排序。当我像这样 NSLog 我的信息时,我知道按名称排序是有效的:
// 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);
}
}
}
在这一点上,我肯定遗漏了一些明显的东西。任何帮助,将不胜感激。谢谢!
【问题讨论】:
标签: iphone uitableview nssortdescriptor