【发布时间】:2014-10-13 06:42:50
【问题描述】:
我在 UITableViewController 中显示了一个名为 Skills 的实体。
我在viewDidLoad 中获取这样的结果:
-(void)fetchTableData {
NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Skills" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSError *error;
self.skillsArray = [[self.managedObjectContext executeFetchRequest:fetchRequest error:&error] mutableCopy];
}
我的索引路径单元格也是:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
// Configure the cell...
Skills *skill = self.skillsArray[indexPath.row];
// Skills is a NSManagedObject, I added the Skills.h file.
[cell.textLabel setText:skill.nameOfSkill];
return cell;
}
我通过在委托方法中使用带有文本字段的UIAlertView 将新的NSManagedObject *newSkill 添加到Core Data:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 1) {
NSLog(@"Add button clicked");
NSString *newSkillText = [alertView textFieldAtIndex:0].text;
NSManagedObjectContext *context = [self managedObjectContext];
Skills *newSkill = [NSEntityDescription insertNewObjectForEntityForName:@"Skills" inManagedObjectContext:context];
newSkill.nameOfSkill = newSkillText;
[self.skillsArray addObject:newSkill];
} else {
// Do something else
}
[self.tableView reloadData];
}
每次我重新加载数据时,单元格都会按照添加数据的顺序显示数据,但是如果关闭视图控制器并返回单元格以不同于添加的顺序显示数据?奇怪的是,我正在使用相同的代码来添加核心数据并在另一个UITableViewController 中检索它,并且它永远不会乱序显示。在这个UITableViewController 中添加的数据如下:我正在推送到另一个UIViewController 并在那里添加信息,然后关闭回tableview。在这段代码中,我在显示视图控制器时添加了信息,也许这可能与它有关?
我也知道我可以添加一个 NSSortDiscriptor,例如:
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]initWithKey:@"nameOfSkill" ascending:YES];
NSArray *sortDescriptors = @[sortDescriptor];
但它是按名称执行的,我希望通过添加方式来添加索引,而不必为索引添加另一个属性,因为我从来没有对我的其他数据这样做过,它总是按添加的顺序显示。
【问题讨论】:
-
Core Data 没有默认排序。 See this question.
标签: ios objective-c xcode uitableview core-data