我无法将照片保存到核心数据中。我正在尝试将其另存为实体中设置为“可变形”的属性。我在SO上对此进行了各种讨论,共识似乎是在iOS5及更高版本中,我不需要使用编码器,因为UIImage现在符合NSCoding。尝试保存核心数据时出现错误。请在下面查看我用于保存照片的代码...

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType];
    UIImage *originalImage, *editedImage, *imageToSave;

    // Handle a still image capture
    if (CFStringCompare ((CFStringRef) mediaType, kUTTypeImage, 0) == kCFCompareEqualTo) {

        editedImage = (UIImage *) [info objectForKey:UIImagePickerControllerEditedImage];
        originalImage = (UIImage *) [info objectForKey:UIImagePickerControllerOriginalImage];

        if (editedImage) {
            imageToSave = editedImage;
        } else {
            imageToSave = originalImage;
        }

        // Convert image to Data for entry into Core Data
        NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(imageToSave)];

        // Add image to Core Data
        myEntity.attribute = imageData;

        NSError *error = nil;
        if (![managedObjectContext save:&error]) {
            NSLog(@"Error when saving core data");
            NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
            abort();
        }

    }

    [[picker parentViewController] dismissModalViewControllerAnimated: YES];
    [picker release];
}

最佳答案

我已经做了很多次了。将存储类型从可转换更改为二进制数据,您应该可以。

您还想牢记几件事。如果图像很小(1MB或更小),则将其存储在主实体中应该没有问题。如果更大,出于性能原因,应该将图像本身存储在实体中。如果图像很大,您可能需要考虑将其存储在文档目录中,就像上面匿名建议的那样。

07-28 03:13
查看更多