让UITableViewController
显示游戏中的分数。
得分将显示1,5,1,13
他们保存的顺序,但看了他们刚刚开始改变顺序的分数两三次的分数。该分数将显示
5,1,1,13或1,13,1,5
我使用此代码为什么每次在UITableViewController中以不同的顺序显示我的Core Data?
-(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"];
}
我的实体名称为 “成绩” 拯救分数和我有有其中一个属性称为“得分”。
我加载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"]]];
}
我使用该确切的代码对于另一个应用程序和在表中的数据总是显示在保存它的确切顺序的细胞。我已经阅读了很多文档,并在使用该方法进行回答之前搜索了其他地方。我明白为什么信息会改变秩序。谢谢你的帮助!
谢谢!我刚才看到在我的最后一个应用程序中使用了NSSortDescriptor。 – lostAtSeaJoshua