繁体   English   中英

访问核心数据对象时出现NSInvalidArgumentException

[英]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实例或NSManagedObjectNSManagedObject 您告诉编译器该数组包含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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM