【问题标题】:save a image from UIimageView to Core Data将图像从 UIimageView 保存到 Core Data
【发布时间】:2014-06-16 01:32:14
【问题描述】:

我有一个“按钮”可以将图像从相机胶卷加载到imageView,这非常有效。 现在我将图像保存在imageView 我的数据库中。

我有 4 个“文本字段”,这可以正常工作。当我添加代码以保存“图像”时,应用程序崩溃了。

.h 文件中我有:

@property (weak, nonatomic) IBOutlet UIImageView *pictureData;

对于UIImage

我的.m 文件:

- (IBAction)save:(id)sender {
    NSManagedObjectContext *context = [self managedObjectContext];

    if (self.device) {
        // Update existing device
        [self.device setValue:self.nameTextField.text forKey:@"name"];
        [self.device setValue:self.versionTextField.text forKey:@"version"];
        [self.device setValue:self.companyTextField.text forKey:@"company"];
         [self.device setValue:self.adresse.text forKey:@"adresse"];
        [self.device setValue:self.pictureData forKey:@"picture"];



    } else {
        // Create a new device
        NSManagedObject *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"Device" inManagedObjectContext:context];
        [newDevice setValue:self.nameTextField.text forKey:@"name"];
        [newDevice setValue:self.versionTextField.text forKey:@"version"];
        [newDevice setValue:self.companyTextField.text forKey:@"company"];
        [newDevice setValue:self.adresse.text forKey:@"adresse"];
        [newDevice setValue:self.pictureData forKey:@"picture"];


    }

    NSError *error = nil;
    // Save the object to persistent store
    if (![context save:&error]) {
        NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
    }

    [self dismissViewControllerAnimated:YES completion:nil];
}

xcdatamodeld(核心数据)我有图片类型为二进制数据集! 哪里出错了?

【问题讨论】:

  • UIImage 保存在UIImageView 中。 self.pictureData.image
  • 从imageView中获取图片,并转换为NSData,然后存储到CoreData。

标签: ios objective-c uiimageview


【解决方案1】:

您应该保存其image 属性,而不是保存UIImageViewThis stack overflow question 展示了如何在 CoreData 中保存和检索 UIImage

1) 存储图片:

NSData* data = [NSData dataWithData:UIImagePNGRepresentation(yourUIImage)];
// save 'data' to core data

2) 加载图片:

// retrieve data from core data as per usual, stored in 'data'
UIImage* image = [UIImage imageWithData:data];

【讨论】:

    【解决方案2】:

    问题来了,

    [self.device setValue:self.pictureData forKey:@"picture"];
    

    UIImageView是对象不是二进制数据,替换如下语句

    [self.device setValue:UIImagePNGRepresentation(self.pictureData.image) forKey:@"picture"];
    

    编辑:

    要检索,

    [self.pictureData setImage:[UIImage imageWithData:[self.device valueForKey:@"picture"]]];
    

    【讨论】:

    • 但现在它在加载时崩溃了...self.pictureData.image = [self.device valueForKey:@"picture"];...对不起,我是 xcode 的初学者..跨度>
    【解决方案3】:

    您应该避免将图像存储在 RAM 中,因此图像也不应该存储在 Core Data 中。将图像写入磁盘,并将文件名存储在数据库中。

    使用[UIImage imageWithContentsOfFile:] 从磁盘读取文件 - 这将完美处理内存不足的情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      • 1970-01-01
      • 2020-11-28
      • 2011-05-11
      相关资源
      最近更新 更多