我在最好的情况下使用核心数据,很少或没有困难。在这个新项目中。我试图将照片添加到单个项目中。现在,项目实体被创建并保存,没有任何问题。当我尝试将多张照片添加到项目中时会出现问题。它只允许我一次添加一个,如果我尝试添加一个新的,它会重写(替换)我添加的前一个。我一直试图找出它并尝试不同的方法(手动将其添加到可变集并设置新集)。下面是我创建项目,照片和将照片添加到项目的代码。
任何帮助都将不胜感激。
在'viewWillAppear'中:
self.project = [NSEntityDescription insertNewObjectForEntityForName:@"Project" inManagedObjectContext:self.managedObjectContext];
\\ set certain attributes
在'imageController:didFinishPickingMediaWIthInfo:'委托方法
NSString *mediaType = info[UIImagePickerControllerMediaType];
void(^completion)(void) = ^(void) {
if ([mediaType isEqualToString:(NSString *)kUTTypeImage])
{
UIImage *image = info[UIImagePickerControllerOriginalImage];
[self addPhotoToProject:image];
}
};
[self dismissViewControllerAnimated:YES completion:completion];
最后,我的自定义'addPhotoToProject:'
Photo *temp = [NSEntityDescription insertNewObjectForEntityForName:@"Photo" inManagedObjectContext:self.managedObjectContext];
temp.img = UIImagePNGRepresentation(image);
temp.date = [NSDate date];
temp.project = self.project;
[self.project addPhotosObject:temp];
此时,我重新拉出项目的照片列表并更新collectionView我必须显示它们。此外,项目本身不会保存在这些点,用户必须按保存。
答案 0 :(得分:0)
在运行时创建新的project
:
-(NSManagedObject *)project
{
if(!_project) {
_project = [NSEntityDescription insertNewObjectForEntityForName:@"Project" inManagedObjectContext:self.managedObjectContext];
}
return _project;
}
答案 1 :(得分:0)
我发现了什么问题,在viewWillDissappear
方法中,我有managedObjectContext
回滚。由于imagePickerController
不断弹出导致项目被删除。感谢@EricQian关于查看viewWillAppear的想法,这让我想到了这个