我的桌子有一个问题。我已经创建了CoreData attribute1,2,3,用户可以在其中存储NSStrings。我在TableView中使用sortDescriptorWithKey显示此数据:“attribute1”。然后我的桌子上有三个按钮,用户可以通过点击它们来手动更改此说明。当他想通过attribute1或attribute2排列数据时,一切正常,但是attribute3不起作用。表中的数据按混乱排序。
任何帮助表示感谢。
这是我的代码:
-(IBAction)sortTable:(UIButton*)sender {
NSString *key = @"price";
if (sender.tag ==1) {
key = @"date";
} else if (sender.tag ==2) {
key = @"result";
}
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Data"];
request.sortDescriptors =
@[[NSSortDescriptor sortDescriptorWithKey:key ascending:NO]];
self.mutableArray = [NSMutableArray arrayWithArray:[self.managedObjectContext executeFetchRequest:request error:nil]];
[self.tableView reloadData];
}
答案 0 :(得分:1)
您的代码看起来很好。确保您实际上在表中显示attribute3
字符串而不是其他内容。在实际的sqlite商店中与您的数据进行交叉检查。
不过,我认为您的代码非常多余。尽量简化。一种方法是让按钮具有标签1,2和3。
-(IBAction)sortTable:(UIButton*)sender {
NSString *key = [NSString stringWithFormat:@"attribute%d", sender.tag];
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:"Data"];
request.sortDescriptors =
@[[NSSortDescriptor sortDescriptorWithKey:key ascending:NO]];
self.mutableArray = [NSMutableArray arrayWithArray:
[self.managedObjectContext executeFetchRequest:request error:nil];
[self.tableView reloadData];
}