0

我制作了多个枚举,以便可以保存用户拍摄的照片,该照片显示在 UIImage 中。但是我不知道如何保存和显示在 UIImage 中的图片。我还希望用户选择他想要保存到的枚举,以便我可以将图片分类到流派中。我只想有一个起点,我现在被困住了。

-(void)setLabelTextForCategory:(MyFoodCategory)category
{
    switch(category) {
        case MyFoodCategoryVegetable:
            self.categoryLabel.text = @"V";
            break;
        case MyFoodCategoryMeat:
            self.categoryLabel.text = @"M";
            break;
        case MyFoodCategoryFish:
            self.categoryLabel.text = @"P"; 
            break;
        case MyFoodCategorySweet:
            self.categoryLabel.text = @"D";
            break;
    }
}
4

1 回答 1

0

因此,假设您的核心数据模型中有一个图像实体。在您的情况下,该实体将具有至少两个属性:imageData 和genre。imageData 是 NSData 类型,genre 是 Integer64 类型,当您生成类时将其设置为属性时,它将是 NSNumber。因此,让您的用户选择图像和类型。然后你可以这样保存:

    Image *theSavedImage = [NSEntityDescription insertNewObjectForEntityForName:@"Image" 
                                                         inManagedObjectContext:myContext];
    theSavedImage.imageData = UIImageJpegRepresentation(mySelectedImage, 1.0);
    theSavedImage.genre = [NSNumber numberWithInt:mySelectedGenre];
    NSError *error = nil;
    [myContext save:&error];

此外,如果您在 Google 上环顾四周,您会发现对于将图像直接存储到 Core Data 是否明智存在一些争论。当然可以。但是有些人建议将文件 URL 作为属性存储在托管对象上,并将图像数据写入文件系统。

编辑以回应评论:

imageData属性应该是二进制的,而不是流派。类型应该是 Integer64。在您生成的标头中,这些将分别是 NSData 和 NSNumber 类型的属性。NSNumber 属性(流派)是您将选择的枚举值保存到的内容,使用[NSNumber numberWithInt:mySelectedGenre];选择流派必须是一个单独的步骤,因为 UIImagePickerController 旨在按原样使用并且不为用户提供执行任何操作的机会但基本上选择一个图像。

于 2013-08-09T17:10:21.220 回答