gpt4 book ai didi

ios - 为什么每次在UITableViewController内部以不同的顺序显示我的核心数据?

转载 作者:行者123 更新时间:2023-12-01 18:59:59 27 4
gpt4 key购买 nike

使用UITableViewController显示游戏得分。

分数将显示1,5,1,13
保存顺序,但是在查看分数的两倍或三倍之后,他们才开始更改顺序。分数将显示
5、1、1、13或1、13​​、1、5
我使用此代码保存分数

    -(void)saveDate
{
NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObject *newScore = [NSEntityDescription insertNewObjectForEntityForName:@"Scores" inManagedObjectContext:context];
NSNumber *theScore = [[NSNumber alloc]initWithInt:self.score];
[newScore setValue:theScore forKeyPath:@"score"];
}

我的实体名称是“ Scores ”,并且我有一个名为“ scores ”的属性。
我将 Core Data加载到 TableView内的 ViewDidLoad中:
  - (void)viewDidLoad
{
[super viewDidLoad];
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Scores"];
self.scores = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];
[self.tableView reloadData];
}

self.scores是一个 @property NSMutableArray,我将数据复制到其中,因此我在 NumberOfRows中使用,我在 [self.scores count]中使用;
这是我的托管对象上下文的代码。
     - (NSManagedObjectContext *)managedObjectContext
{
NSManagedObjectContext *context = nil;
id delegate = [[UIApplication sharedApplication] delegate];
if ([delegate performSelector:@selector(managedObjectContext)]) {
context = [delegate managedObjectContext];
}
return context;
}

为了显示单元格,我使用此代码
      - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

// Configure the cell...
NSManagedObject *number = [self.scores objectAtIndex:indexPath.row];
[cell.textLabel setText:[NSString stringWithFormat:@"Score: %@", [number valueForKey:@"score"]]];
}

我将这个确切的代码用于另一个应用程序,并且表中的数据始终按照保存时的确切顺序显示。在使用该方法作为答案之前,我已经阅读了很多文档并搜索了其他地方。我确实了解为什么信息会更改订单。谢谢你的帮助!

最佳答案

您需要设置NSFetchRequest的sortDescriptors。我无法回答为什么每次其他应用程序中的相同代码都以相同顺序返回数据。我在文档中没有看到关于未附加排序描述符的获取请求期间返回结果顺序的任何信息。例如,如果您有一个实体,其名称为“name”,则您需要

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];

关于ios - 为什么每次在UITableViewController内部以不同的顺序显示我的核心数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23464778/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com