讓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