问题标签 [nsfetchedresultscontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3963 浏览

iphone-sdk-3.0 - NSFetchedResultsController 错误:在索引 248 处获取的对象的部分名称乱序

在这里尝试解决方案: https ://stackoverflow.com/questions/1741093?tab=newest#tab-top

我正在使用瞬态属性和类别解决方案,它似乎一直在工作,直到索引字符开始再次环绕到 A,不知道为什么这样做,只是记录类别/瞬态吸气剂返回的内容大写的FirstLetterOfName。

我正在使用 name 属性进行排序,然后将 fetchRequest 上的 sectionNameKeyPath 设置为 uppercaseFirstLetterOfName。

完整的错误是:NSFetchedResultsController 错误:在索引 248 处获取的对象有一个乱序部分名称“Y”。对象必须按部分名称排序'

任何我可能出错的想法或如何追踪问题?

0 投票
2 回答
334 浏览

iphone - NSFetchedResultsController 和我的 TableView 结构

我有一个包含两个部分的 tableView 控制器。第一部分有几个输入字段,并没有真正显示核心数据。第二部分显示使用 Core Data 保存的数据库中的项目。

我有一个,NSFetchedResultsController我为以下提供数据。对于 section = 0,我手动提供适当的输入字段,对于 section = 1,我想使用. () 但是,由于获取的结果控制器只知道一个部分,所以这不起作用。cellForRowAtIndexPathdidSelectRowAtIndexPath[fetchedResultsController objectAtIndexPath:indexPath]

我知道我可以使用 section = 0 创建一个新的 IndexPath,然后将其提供给NSFetchedResultsController. 这是首选的解决方案还是有另一种方式来“告诉”NSFetchedResultsController预期的结果?

0 投票
1 回答
1016 浏览

iphone - 如果谓词使用 IN,则不会调用 NSFetchedResultsControllerDelegate 方法?

我正在结合 NSFetchedResultsController 实现 UITableViewController。当 UITableViewController 被实例化时,NSFetchedResultsController 会根据用户在前一个控制器上所做的选择使用不同的谓词构造(基本上与CoreDataBooks示例相同)。
有时我以这种方式设置谓词:

有时以这种方式:

两个谓词都可以正常工作,因为它们按预期正确获取了我的所有对象。当我在设置第二个谓词时尝试将新的托管对象插入列表时会出现问题。事实上,在这种情况下,FRC 委托方法永远不会被调用,因此 tableview 不会自动更新。
我确定新对象已正确添加到 FRC 使用的同一上下文中,并且已设置其“容器”关系,以便应触发委托,但事实并非如此!

我试过的:

我说第二个谓词工作正常,因为如果我添加一个新对象,然后弹出 UITableViewController 并再次推送它,强制重新获取所有数据,新对象会毫无问题地出现在列表中。
我进行的另一个测试是在添加新对象后立即强制重新计算 FRC:

新对象正确显示。

代码:

我使用的 NSFetchedResultsControllerDelegate 方法取自“更多 iPhone 3 开发”。完整的代码可以在这里查看(第 30-31、35 页)。
如果需要,我可以在这里发帖。

0 投票
2 回答
693 浏览

iphone - NSFetchedResultsController:当对象从较高索引移动到较低索引时出现异常

我有一个由 NSFetchedResultsController 管理的表视图。我在 TableViewController 中使用 Apple 提供的样板代码。我的谓词根据对象的名称检索对象。使用“编辑”按钮添加/删除对象时,一切似乎都正常。如果我以编程方式更改对象的名称,除非名称更改导致对象向上移动表,否则一切正常,在这种情况下,我会收到此错误:

严重的应用程序错误。在调用 -controllerDidChangeContent: 期间,从 NSFetchedResultsController 的委托中捕获了一个异常。*** -[NSMutableArray objectAtIndex:]: 索引 1 超出界限 [0 .. 0] 与 userInfo (null)

假设我有三个名为 A、C 和 D 的对象。如果我将 D 重命名为 B,则应用程序崩溃。如果我将 C 重命名为 B,一切都很酷。

这里发生了什么?

0 投票
4 回答
10163 浏览

iphone - NSFetchedResultsController 索引超出范围

我正在使用 NSFetchedResultsController 在我的表格视图中显示项目:

但是,此代码在此行中断:

Tag *tag = [self.fetchedResultsController objectAtIndexPath:indexPath];

使用此消息:

我已经 NSLogged[self.fetchedResultsController fetchedObjects]并且可以确认确实存在 Tag 对象。如果我用这个替换上面的行,一切都会按预期工作:

Tag *tag = [[self.fetchedResultsController fetchedObjects] objectAtIndex:indexPath.row];

我 NSLoggedindexPath并且索引是 {0, 0} (第 0 行第 0 部分)所以我知道这不是该部分的问题。我对为什么会发生这种情况感到非常困惑,因为从理论上讲,这两段代码做同样的事情。任何帮助表示赞赏。

谢谢

更新:

此代码导致相同的异常:Tag *tag = [[section objects] objectAtIndex:[indexPath row];

如果我NSLog [section objects]返回一个空数组。我不确定为什么[fetchedResultsController fetchedObjects]返回一个包含正确对象的数组,却[section objects]什么也不返回。这是否意味着我正在创建的对象没有部分?这是我用来添加新对象的代码:

这是我的saveContext方法:

我在这里做错了吗?

0 投票
1 回答
645 浏览

iphone - 使用 NSMutableArray 而不是 NSFetchedResultsController

我最近了解到这NSFetchedResultsController是一个非常有问题的课程,它让我的相当大的 Core Data 应用程序让我头疼了一段时间。

NSMutableArray使用 an来提供表格视图而不是是否合适NSFetchedResultsController?我在说的是,临时创建一个获取的结果控制器来从我的托管对象上下文中获取对象,从获取的结果控制器中创建一个新NSMutableArrayfetchedObjects,然后使用它来提供我的表格视图。

NSFetchedResultsController直接使用 anNSMutableArray向我的表格视图提供数据有什么好处吗?

0 投票
3 回答
1090 浏览

iphone - 核心数据关系、NSPredicates 和 NSFetchedResultsController

这让我整天发疯。

我有一个奇怪的错误,我认为我已经缩小到一个 NSPredicate。我有两个实体:List 和 Person。List 与名为 Person 的 Person 具有一对多关系,而 Person 与名为 lists 的 List 具有一对多关系。

我将一个 List 对象传递给我的 tableview 控制器。然后,我希望该 tableview 控制器显示属于该列表对象的 Persons。我正在使用 NSFetchedResultsController 执行此操作。

设置 NSFRC 时,我有以下代码(为清楚起见,省略了内存管理)。有问题的清单是myList

我认为问题出在这条线(因为如果我删除它就会消失):

发生的事情是当父视图传递myList给 tableview 控制器时,模拟器只是挂起。控制台中没有崩溃日志或任何东西。就好像它只需要 AGES 来整理 NSFRC。

这是我使用的谓词的问题吗?

0 投票
1 回答
224 浏览

iphone - 将 BWOrderedManagedObject 与 NSFetchedResultsController 一起使用

我想BWOrderedManagedObject在 Core Data 中存储一个有序对象数组,NSFetchedResultsController用于显示数据。

然而,所有BWOrderedManagedObject的方法似乎都只是简单地返回一个有序对象的数组;NSFetchedResultsController需要一个NSFetchRequest,对一个进行排序的唯一方法NSFetchRequest是提供一个 的数组NSSortDescriptors

所以,我对如何使用BWOrderedManagedObjectwith有点NSFetchedResultsController困惑——有谁知道我如何能够成功地做到这一点?

(我可能可以创建自己的排序键并将其与排序描述符一起使用,但我假设这BWOrderedManagedObject会更健壮......?)

0 投票
2 回答
1693 浏览

iphone - UISearchResultsController 在设备上崩溃(空数组的索引超出范围)

UISearchResultsController用来过滤来自fetchedResultsController. 以下是相关代码:

RootVieweController.h

RootViewController.m

这在模拟器中效果很好。但是在设备上,它会在尝试显示 searchResultsTableView 时object = [[self filteredListContent] objectAtIndex:[indexPath row]];崩溃。configureCell我得到错误[NSMutableArray objectAtIndex:]: index 7 beyond bounds for empty array。始终索引 7。我在这里缺少什么?

- 更新 -

固定:翻转searchIsActive BOOL打开searchDisplayControllerDidBeginSearch而不是searchDisplayControllerWillBeginSearchsearchDisplayControllerWillEndSearch而不是searchDisplayControllerDidEndSearch。这可以防止表格尝试配置不存在的单元格。不知道为什么模拟器没有捕捉到这个

0 投票
1 回答
4291 浏览

iphone - 'NSFetchedResultsController 不支持使用 NSDictionaryResultType 的更改跟踪和获取请求'

我有一个在 OS3+ 下运行良好的应用程序。但它在 OS4 下不起作用。我收到以下错误消息:

'NSFetchedResultsController 不支持使用 NSDictionaryResultType 的更改跟踪和获取请求'

它对这里的任何人都敲响了警钟吗?

提前致谢。