我想将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"];
}
当我想要获取这个图像数组时,这显示为
- (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.
}
我在使用此代码时遇到了什么问题。感谢。
答案 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"];
。