我正在尝试使用具有个人资料名称和人物图像的表格视图的应用程序。表格视图是可编辑的,可以添加新名称和图片,删除现有名称和重新排列表格是可能的。表格视图及其更改应该被保存使用核心数据..我几乎完成了它,但核心数据部分有一些问题..
我已经实现了核心数据来为表格单元提供数据持久性..每次我重新启动应用程序时,表格单元都会保留上次所做的更改..但是单元格图像没有加载..如何使该图像持续存在?
NSManagedObject *person1 = [NSEntityDescription
insertNewObjectForEntityForName:@"Person"
inManagedObjectContext:context];
NSManagedObject *person2 = [NSEntityDescription
insertNewObjectForEntityForName:@"Person"
inManagedObjectContext:context];
[person1 setValue:@"Bruce" forKey:@"personName"];
UIImage *image1 = [UIImage imageNamed:@"image1.jpg"];
NSData *imageData1 = UIImageJPEGRepresentation(image1, 0.9);
[person1 setValue:imageData1 forKey:@"personPicture"];
NSLog(@"Image1 data %@",imageData1);
[person2 setValue:@"Alfred" forKey:@"personName"];
UIImage *image2 = [UIImage imageNamed:@"image2.jpg"];
NSData *imageData2 = UIImageJPEGRepresentation(image2, 0.9);
[person2 setValue:imageData2 forKey:@"personPicture"];
NSError *error;
if (![context save:&error]) {
NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
}
然后 fetch 完成为
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Person" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSError *error1 = nil;
self.persons = [[context executeFetchRequest:fetchRequest error:&error1] mutableCopy];
didFinishLaunchingWithOptions
在 appDelegate中完成了很多工作。然后在cellForRowAtIndexPath
tableview 类实现文件中的方法中使用数据作为
Person *thisPerson = [persons objectAtIndex:indexPath.row];
cell.textLabel.text = thisPerson.personName;
UIImage *image = [UIImage imageWithData:[thisPerson valueForKey:@"personPicture"]];
if ( image == nil ) {
image = [UIImage imageNamed:@"QuestionMark.jpg"];
}
cell.imageView.image = image;
单元格正在正确加载..我所做的所有编辑部分也正在保存和重新加载..第一次加载应用程序时图像正确加载..重新启动时出现 QuestionMark.jpg 图像..这是因为图像是 nil ..我尝试 NSLog 显示第一个图像数据并得到这个:
2012-09-07 17:05:59.395 Sample Project[1688:fb03] Image1 data <ffd8ffe0 00104a46
49460001 01000001 00010000 ffe10058 45786966 00004d4d 002a0000 00080002 01120003
00000001 00010000 87690004 00000001 00000026 00000000 0003a001 00030000 00010001
0000a002 00040000 00010000 00bea003 00040000 00010000 01090000 .........
...... .............. 7ff4d668 0356803f 357e307f c94ff14f fd858ffe
9af4ba00 f39a00cf a00d0a00 cfa00280 0a002803 ffd9>
在我添加点的地方还有很多..无论如何..这似乎表明它保存了数据..