0

我的桌子有一个问题。我制作了 CoreData 属性 1、2、3,用户可以在其中存储 NSString。我在 TableView 中使用 sortDescriptorWithKey 显示的这些数据:“attribute1”。然后我的桌子上有三个按钮,用户可以通过点击它们来手动更改此描述。当他想按属性 1 或属性 2 排列数据时,一切正常,但属性 3 不起作用。表中的数据按混沌排序。

任何帮助表示赞赏。

这是我的这些按钮的代码:

-(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];
}
4

1 回答 1

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];
}
于 2013-11-06T18:58:54.260 回答