[英]NSInvalidArgumentException when accessing core data object
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Contacts length]:
我正在从coredata获取图像,并且显然图像的格式是BYTE,所以我将其转换为图像。 我正在使用以下代码:
NSFetchRequest * request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Contacts"
inManagedObjectContext:context]];
NSError * error = nil;
NSArray * objects = [context executeFetchRequest:request error:&error];
NSData *data1= objects[0];
UIImage *image2 = [[UIImage alloc]initWithData:data1];
该怎么办?
[context executeFetchRequest:request error:&error];
返回一个数组,该数组包含NSManagedObject
实例或NSManagedObject
子NSManagedObject
。 您告诉编译器该数组包含NSData的实例,事实并非如此。 因此,未知的选择器方法。
如果我们假设您将图像数据保存在名为imageData
的属性中,则代码将如下所示:
NSArray * objects = [context executeFetchRequest:request error:&error];
NSAssert(objects, @"Can't fetch: %@", error);
if ([objects count] > 0) {
NSManagedObject *object = objects[0];
NSData *data = [object valueForKey:@"imageData"];
}
您可以使用以下内容
NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest * fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity1 = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:context];
[fetchRequest setEntity:entity1];
NSArray * array = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil];
NSData * dataBytes = [[array objectAtIndex:0] imgPng];
image = [UIImage imageWithData:dataBytes];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.