问题描述
|
我有一个在UITableView中显示的Marker对象的NSMutableArray。我有一个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);
}
}
}
目前,我肯定缺少明显的东西。任何帮助,将不胜感激。谢谢!
解决方法
更换:
[self.MarkersList arrayByAddingObjectsFromArray:sortedArray];
带有:
[self.MarkersList addObjectsFromArray:sortedArray];
发现错误并为之高兴!