首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NSFetchedResultsController错误:'NSInvalidArgumentException',原因:'-[NSSortDescriptor countByEnumeratingWithState:objects:count:]:

NSFetchedResultsController错误:'NSInvalidArgumentException',原因:'-[NSSortDescriptor countByEnumeratingWithState:objects:count:]:
EN

Stack Overflow用户
提问于 2014-08-04 01:17:56
回答 1查看 695关注 0票数 0

我正在尝试创建一个NSFetchedResultsController,请求从特定的区域获取照片。我有两个模型区域和照片在我的核心数据。下面是我在哪里得到错误的代码:

代码语言:javascript
运行
复制
- (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的桌面视图中显示这些照片。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-04 16:29:42

问题在于:

代码语言:javascript
运行
复制
request.sortDescriptors = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES selector:@selector(localizedStandardCompare:)];

Fetch请求使用一个排序描述符数组,因为您可以提供多个。这就是为什么它是sortDescriptors而不是sortDescriptor。你需要提供一个数组。一个简单的解决方法是更改行以创建包含描述符的单元素数组:

代码语言:javascript
运行
复制
request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES selector:@selector(localizedStandardCompare:)]];

这就是问题所在:countByEnumeratingWithState:objects:count:是一个由NSFastEnumeration协议定义的方法。由于NSArray采用了该协议,因此需要实现该方法。但是,由于NSSortDescriptor不采用该协议,它就不会采用这种方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25110605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档