将核心数据中的图像数组保存为可变形

时间:2015-04-17 06:51:40

标签: core-data ios6.1

我想将imageArray添加到可转换的coredata中,但这不能正确存储。

我的保存按钮编码。

  - (IBAction)saveButton:(id)sender {

NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObject *newEntry = [NSEntityDescription insertNewObjectForEntityForName:@"FoodInfo" inManagedObjectContext:context];
NSAttributeDescription *messageType = [[NSAttributeDescription alloc] init];
[messageType setName:@"photos"];
[messageType setAttributeType:NSTransformableAttributeType];
[imagesForShow addObject:messageType];
 NSError *error = nil;
if (![context save:&error]) {
    NSLog(@"Unable to save context for class" );
} else {
    NSLog(@"saved all records!");
    [context save:nil];
}
//[newEntry setValue:imagesForShow forKey:@"images"];


}
  • 这里'imagesForShow'是我的图像阵列。

当我想要获取这个图像数组时,这显示为

- (void)viewDidLoad {
[super viewDidLoad];

NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc]initWithEntityName:@"FoodInfo"];
[request setReturnsObjectsAsFaults:NO];
arrayForPhotos = [[NSMutableArray alloc]initWithArray:[context executeFetchRequest:request error:nil]];




// Do any additional setup after loading the view.
}

我在使用此代码时遇到了什么问题。感谢。

1 个答案:

答案 0 :(得分:0)

在您的保存代码中:

NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObject *newEntry = [NSEntityDescription
     insertNewObjectForEntityForName:@"FoodInfo"
     inManagedObjectContext:context];
NSAttributeDescription *messageType = [[NSAttributeDescription alloc] init];
[messageType setName:@"photos"];
[messageType setAttributeType:NSTransformableAttributeType];
[imagesForShow addObject:messageType];

我甚至无法弄清楚应该做些什么。这是完全错误的。你永远不应该分配一个NSAttributeDescription的实例,除非你正在构建一个动态的核心数据模型 - 你没有这样做,几乎没有人做过。创建新条目是可以的。其余的,我不知道。你说imagesForShow是你的图像数组,所以我不知道你为什么还要在数组中添加一个属性描述。

从更一般的意义上讲,如果 newEntry具有名为photos imagesForShow的可转换属性,则为{{1 } NSArray个对象,然后你可以这样做:

UIImage

这类似于你已注释掉的一行,但不清楚它为什么会被注释掉。

但无论你做什么都摆脱了创建[newEntry setValue:imagesForShow forKey:@"photos"];

的代码