我创建了多个枚举,以便我可以保存用户在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;
}
}
答案 0 :(得分:0)
因此,假设您的核心数据模型中有一个Image实体。在您的情况下,此实体将具有至少两个属性: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];
另外,如果你环顾谷歌,你会发现关于将图像直接存储到核心数据是否明智存在争议。当然可以做到。但有些人建议将文件URL作为属性存储在托管对象上,并将图像数据写入文件系统。
编辑以回应评论:
imageData 属性应该是二进制,而不是类型。该类型应该是Integer64。在生成的标头中,这些标题分别是NSData和NSNumber类型的属性。 NSNumber属性(类型)是您将所选枚举值保存到的内容,使用[NSNumber numberWithInt:mySelectedGenre];
选择一个类型必须是一个单独的步骤,因为UIImagePickerController旨在按原样使用并且不提供用户除了基本上选择图像之外,还有机会做任何事情。