0
请仔细阅读代码并告诉我我在这里做错了什么。如何在重新排序TableView时更改CoreData的索引?
TableViewController.m
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
NSManagedObjectContext *context = [self managedObjectContext];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Device" inManagedObjectContext:context];
NSFetchRequest *fetchrequest = [[NSFetchRequest alloc]initWithEntityName:entity];
_devices = [[context executeFetchRequest:fetchrequest error:nil]mutableCopy];
[self.tableView reloadData]; // When TableView is reloading the data in tableview updating according to the data stored via CoreData.
}
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
if (fromIndexPath != toIndexPath) {
NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObject *device = [self.devices objectAtIndex:fromIndexPath.row];
NSString *str1 = [device valueForKey:@"text1"];
NSLog(@"%@",str1);
[self.devices removeObject:device];
[self.devices insertObject:device atIndex:[toIndexPath row]];
// int i = 0;
// for (NSManagedObject *mo in self.devices)
// {
// NSManagedObject *new = [self.devices objectAtIndex:i];
// NSString *check = [new valueForKey:@"text1"];
// NSLog(@"%@",check);
// NSString *check1 = [new valueForKey:@"text2"];
// NSLog(@"%@",check1);
// NSString *check2 = [new valueForKey:@"text3"];
// NSLog(@"%@",check2);
// [mo setValue:[NSString stringWithFormat:@"%@",[new valueForKey:@"text1"]] forKey:@"text1"];
// [mo setValue:[NSString stringWithFormat:@"%@",[new valueForKey:@"text2"]] forKey:@"text2"];
// [mo setValue:[NSString stringWithFormat:@"%@",[new valueForKey:@"text3"]] forKey:@"text3"];
// i++;
// }
NSError *error;
if(![context save:&error]){
NSLog(@"%@ %@",error, [error localizedDescription]);
}
}
}
我有实体名称:设备和列名:文本1,文本2,文字3
我不想在核心数据的数据进行排序,其实我想移动TableView中的行,我想更新保存在列text1,text2,text3中的数据的索引。总的来说,tableview中有5行,我只是想更新相对于更新的tableview索引值的索引。
我已经尝试过该链接的对象。当从数据库获取值时,它将按照升序或降序对记录进行重新排序。 –
如果您将displayOrder属性添加到实体,并在将数据显示到表视图之前对displayOrder进行排序,那么这不会为您的问题服务 –
确切地说,现在我已经获得了教程。我现在就试试这个。谢谢... –