问题标签 [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 回答
1893 浏览

iphone - 不同实体的多个 NSFetchedResultControllers?

我正在检查 iPhone Core Data 项目的默认 Xcode 模板。在返回获取的结果控制器的方法中,我看到了这个:

它似乎正在设置特定的实体名称。如果我有多个实体怎么办?我是否会有 2 个 NSFetchedResultsController 实例并有 2 个方法根据我使用的实体返回正确的控制器?

谢谢

0 投票
3 回答
10381 浏览

iphone - 核心数据:具有多个 NSFetchedResultControllers 的 UITableView

我想做的很简单。在我的 UITableViewController 中,我想从多个 NSFetchedResultControllers 加载数据(我的数据模型中有多个实体)并将每个实体的数据放入表视图的不同部分。例如,从第一个 NSFetchedResultController 获取的所有项目将进入 UITableView 的第 0 部分,从另一个获取的项目进入第 1 节,等等。

Core Data 模板项目没有演示如何执行此操作。一切(主要是索引路径)都是在不考虑节的情况下编码的(默认模板中没有节),并且一切都取自单个 NSFetchedResultController。是否有任何示例项目或文档可以证明这样做?

谢谢

0 投票
2 回答
4644 浏览

iphone - Core Data Fetched Results Controller and Custom Section Header

I am familiar with the common and basic use of a NSFetchedResultsController managing the rows of a table, but I have an interesting problem.

My data is organized as such: Schedule <--->> Day <--->> Route. I currently have a table view that has Schedules with a fetch controller managing the creation and deletion of Schedules. I now want to create a table view for Routes/Days.

I would like to list a Route on every row, and create custom section headers that correspond to information within the relevant Day. I could probably hack something together by fetching all the routes, and then sectioning them by the inverse relationship to there respective Day, but I am worried that then I will not be able to take advantage of the fetch controller delegate methods for updating the table when managed objects change.

Does anyone have any experience with this? Any ideas on how to move forward?

Thanks.

0 投票
2 回答
1116 浏览

iphone - 从一个 UITableViewController 导航到另一个时 NSFetchedResultsController 崩溃

在我的核心数据模型中,我有一个 Person 实体,它与 Course 实体具有“对多”关系(我也有从 Course 到 Person 的反向“对一个”关系)。

现在我有一个子类 UITableViewController 使用 NSFetchedResultsController 来显示工作正常的 Person 对象。我有这个设置,以便当您单击一个人时,它会发布另一个使用 NSFetchedController 的子类 UITableViewController 以及显示与该人关联的课程。

问题:每当我单击 Person 并尝试显示 Course UITableViewController 时,我都会收到此异常...

"Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath name not found in entity <NSSQLEntity Course id=2>'"

关于如何解决或排除故障的任何想法?

两个 ViewController 之间的代码几乎相同,除了 NSFetchedResultsController 被配置为一个中的“Person”实体和另一个中的“Course”实体

0 投票
1 回答
410 浏览

iphone - 在同一个视图中在 Core Data 中执行多次获取

我有我的 CD 存储设置,一切正常。执行初始提取后,我需要使用第一次提取的数据根据​​计算执行几次提取。Apple 提供的示例很棒,帮助我完成了一切,但我在执行连续提取时遇到了困难。任何建议或教程链接表示赞赏。

  1. 表视图从 CD 存储加载数据。
  2. 当用户点击一行时,它会推送一个详细视图
  3. 详细视图从 CD 加载详细信息。[以上步骤都有效]
  4. 我对详细视图中获取的数据执行了几次计算。
  5. 然后我需要根据我的计算结果执行其他几个提取。
0 投票
1 回答
237 浏览

cocoa - 如何按 NSFetchedResultsController 中的可转换属性进行排序?

我正在使用 NSValueTransformers 来加密我的核心数据模型中的属性(字符串、日期等),但我很确定它会干扰我的 NSFetchedResultsController 中的排序。

有谁知道是否有办法解决这个问题?我想这取决于排序的执行方式;如果它总是只直接在数据库上执行,那么我可能不走运。如果它对对象本身进行排序,那么也许有一种方法可以在排序发生之前激活转换。

不过,我猜它直接在数据库上,因为排序将是获取集合子集的关键,这无论如何都是 NSFetchedResultsController 的主要好处。

注意:我应该补充一点,这里有一些奇怪的行为......集合不会在第一个会话(创建对象的会话)中排序,但它会在后续会话中排序(对象已经存在并且只是正在检索)。因此,也许排序确实适用于可转换对象,但可能需要注意的是必须先保存它们或类似的东西(?)

0 投票
2 回答
3606 浏览

iphone - NSFetchedResultsController 快把我逼疯了

自 1 个月以来,我一直在使用 NSFetchedResultsController 构建一个应用程序,并且我正在 3.1.2 SDK 上测试该应用程序。问题是我一直在我的应用程序中到处使用 NSFetchedResultsController 并且正在开发 3.1.2 版本的 SDK,现在我的客户说我应该让它与 3.0 版本兼容并且截止日期快到了。

但是每次我更改控制器处理的对象时都会崩溃,应用程序会因非常奇怪的错误而崩溃。

当删除部分中的最后一个对象以及更改使对象爱到另一个部分时,会出现此问题。

我一直在使用 Dave Mark 和 Jeff LaMarche 的“More iPhone 3 Development Tackling iPhone SDK 3”中的示例代码。我还包含了链接文本的一些更改

这是应用程序崩溃时控制台的示例输出。

*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无效更新:节数无效。更新后表视图中包含的节数(1)必须等于更新前表视图中包含的节数(2),加上或减去插入或删除的节数(2插入,0已删除)。2010-03-14 16:23:29.758 Instaproofs[5879:207] Stack: ( 807902715, 7364425, 807986683, 811271572, 815059090, 815007323, 211023, 4363331, 810589786, 807635429, 810579728, 3620573, 3620227, 3614682, 3609719, 27337 , 810595174, 807686849, 807683624, 839142449, 839142646, 814752238)

如果我知道 NSFetchedResultsController 有这么多错误,我永远不会使用它。

所以基本上我需要我的 NSFetchedResultsControllerDelegate 在 3.0 及更高版本的 SDK 上正常工作。

如果有人帮我弄清楚我做错了什么,那将是救命稻草。

0 投票
2 回答
3168 浏览

iphone - 自定义部分名称崩溃 NSFetchedResultsController

我有一个带有 dueDate 属性的托管对象。我没有使用一些丑陋的日期字符串作为 UITableView 的部分标题来显示,而是创建了一个名为“category”的瞬态属性并将其定义如下:

这是 NSFetchedResultsController 设置:

该表最初显示良好,在标题为“进行中”的部分中显示了到期日期尚未通过的未完成项目。现在,用户可以点击表格视图中的一行,将新的详细信息视图推送到导航堆栈上。在这个新视图中,用户可以点击一个按钮来指示该项目现在“完成”。这是按钮的处理程序(self.task 是托管对象):

一旦“finishedDate”属性的值发生变化,我就会遇到这个异常:

我已经设法弄清楚当前被新的详细信息视图隐藏的 UITableView 正在尝试更新其行和部分,因为 NSFetchedResultsController 被通知数据集中发生了某些更改。这是我的表格更新代码(从 Core Data Recipes 示例或 CoreBooks 示例中复制——我不记得是哪个了):

我在每个函数中都设置了断点,发现只调用了controllerWillChange。在调用 controller:didChangeObject:atIndexPath:forChangeType:newIndex 或 controller:didChangeSection:atIndex:forChangeType 之前抛出异常。

在这一点上,我被困住了。如果我将 sectionNameKeyPath 更改为“dueDate”,那么一切正常。我认为这是因为dueDate 属性永远不会改变,而在finishedDate 属性更改后回读时类别会有所不同。

请帮忙!

更新:

这是我的 UITableViewDataSource 代码:

0 投票
4 回答
20073 浏览

iphone - NSFetchedResultsController:更改谓词不起作用?

我正在编写一个在一个屏幕上包含两个表格的应用程序。左表是文件夹列表,右表显示文件列表。当点击左侧的一行时,右侧的表格将显示属于该文件夹的文件。

我正在使用 Core Data 进行存储。当文件夹的选择发生变化时,右表的 NSFetchedResultsController 的 fetch 谓词会发生变化并执行新的 fetch,然后重新加载表数据。我使用了以下代码片段:

但是提取结果仍然相同。在获取之前和之后,我已经 NSLog'ed “谓词”,并且它们对于更新的信息是正确的。提取结果与初始提取相同(加载视图时)。

我对 Core Data 获取对象的方式不是很熟悉(有缓存系统吗?),但我之前用单表视图做过类似的事情(更改谓词、重新获取数据和刷新表),一切顺利好。

如果有人能给我一个提示,我将不胜感激。

提前致谢。

0 投票
1 回答
12645 浏览

iphone - 核心数据:实体中找不到键路径“objectID”

我正在使用谓词在我的应用程序NSFetchedResultsController中加载列表。Documents我想加载Documents除当前活动之外的所有内容。

我正在使用 Rentzsch 的MOGenerator创建一个_Document类,然后将所有自定义代码放入Document子类中。_Document生成objectID类型为 的属性DocumentID

在创建控制器的类中,我设置了控制器的currentDocID属性:

在控制器本身中,我像这样延迟加载 fetchedResultsController:

当 fetchedResultsController 加载时,我的应用程序因未处理的异常而崩溃:

据我了解,所有 NSManagedObjects 都有一个 objectID,无论是临时的还是永久的。不是这样吗?有什么想法吗?