我正在尝试创建一个NSFetchedResultsController,请求从特定的区域获取照片。我有两个模型区域和照片在我的核心数据。下面是我在哪里得到错误的代码:
- (void)setRegion:(Region *)region
{
_region = region;
// Making a request for the particular region
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Photo"];
request.sortDescriptors = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES selector:@selector(localizedStandardCompare:)];
request.predicate = [NSPredicate predicateWithFormat:@"fromRegion = %@", region];
NSLog(@"%@", region.name);
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:[region managedObjectContext]
sectionNameKeyPath:nil
cacheName:nil];
}
我收到以下错误:
-NSSortDescriptor countByEnumeratingWithState:objects:count::无法识别的选择器发送到实例0x8d67850
由于异常“NSInvalidArgumentException”终止应用程序,原因:'-NSSortDescriptor countByEnumeratingWithState:objects:count::无法识别的选择器发送到实例0x8d67850'
我不明白我为什么要收到它。我所做的就是从包含特定区域的数据库中检索照片。但是,我在self.fetchedResultsController行上收到了错误信息。这个包含此代码的核心数据表控制器实际上是来自另一个核心数据表控制器的指定视图控制器。
我四处寻找其他解决方案,但它们只处理与循环通过self.fetchedResultsController有关的问题,而我并没有这样做。我只在fetchedResultsController的桌面视图中显示这些照片。
发布于 2014-08-04 16:29:42
问题在于:
request.sortDescriptors = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES selector:@selector(localizedStandardCompare:)];
Fetch请求使用一个排序描述符数组,因为您可以提供多个。这就是为什么它是sortDescriptors
而不是sortDescriptor
。你需要提供一个数组。一个简单的解决方法是更改行以创建包含描述符的单元素数组:
request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES selector:@selector(localizedStandardCompare:)]];
这就是问题所在:countByEnumeratingWithState:objects:count:
是一个由NSFastEnumeration
协议定义的方法。由于NSArray
采用了该协议,因此需要实现该方法。但是,由于NSSortDescriptor
不采用该协议,它就不会采用这种方法。
https://stackoverflow.com/questions/25110605
复制相似问题