问题标签 [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.
ios - 使用 NSFetchedResultsController 创建表部分
我NSFetchedResultsController
用来驱动我的数据UITableViewController
。我正在获取的托管对象的简化版本如下所示(例如):
基本上,我希望我的表格只显示那些Person
有宠物的对象。所以这很简单,我可以使用谓词。现在,对于那些hasPet == YES
,我想将它们分成 2 个部分放在表中,第一个部分hasDog == YES
是 ,第二个是hasDog == NO
。这是我有点模糊的地方。这是我配置结果控制器的地方,希望有人可以帮助我朝着正确的方向前进。
排序描述符是我需要集中注意力的地方吗?
iphone - NSFetchedResultsControllerDelegate 未触发
我无法弄清楚为什么在我将数据添加到底层数据存储时,NSFetchedResultsControllerDelegate 方法没有触发。如果我重新启动 iPhone 应用程序,数据会立即显示。
我继承了 UITableViewController 并符合 NSFetchedResultsControllerDelegate:
我实例化 NSFetchedResultsController 并将委托设置为 self:
我实现了委托方法:
我创建了我希望保存的实体:
后来,我保存它:
除了我的委托方法没有触发之外,这一切都很好。显然我的表格视图没有更新,查看新数据的唯一方法是显式刷新或重新启动应用程序。
我浏览了 CoreData Recipe 应用程序 - 但似乎找不到我缺少的东西。想法?
——路德
iphone - NSFetchedResultsControllerDelegate 'ChangeUpdate' 行为是否被破坏?
NSFetchedResultsControllerDelegate 的文档提供了以下示例代码
当我创建一个新的 NSManagedObject 时,NSFetchedResultsChangeInsert触发(太棒了!)。当我更改属性的值(用于单元格的标题)时,NSFetchedResultsChangeUpdate会触发。不幸的是,除非我重新加载表格、部分或行,否则新标题不会自动显示。实际上,如果新名称导致结果集以不同的方式排序,则NSFetchedResultsChangeMove会触发并且一切正常,因为提供的代码会重新加载整个部分。
UITableView 有一个方法reloadRowsAtIndexPaths:withRowAnimation所以我尝试在 NSFetchedResultsChangeUpdate 代码块下使用它。它确实有效......但是这个特定方法的文档读起来好像我不需要它(注意最后一行):
重新加载一行会导致表视图向其数据源询问该行的新单元格。该表在为旧行设置动画时为该新单元格设置动画。如果要提醒用户单元格的值正在更改,请调用此方法。但是,如果通知用户并不重要——也就是说,您只想更改单元格显示的值——您可以获取特定行的单元格并设置其新值。
是的,如果我记录正在发生的事情,什么时候
在NSFetchedResultsChangeUpdate上调用,它能够检索最新的“名称”值并将其设置在单元格的 textLabel 中。除非我重新加载,否则该名称不会在单元格中呈现。即使我只是单击单元格,也会显示名称。请注意,要重新创建此行为,您必须创建一个新的托管对象,然后为其命名,使其在 NSFetchedResultsController 中排序为 FIRST。这样, NSFetchedResultsChangeMove 就不会触发(它确实有效,因为它重新加载了该部分)。
我错过了什么还是这是预期的行为?reloadRowsAtIndexPaths的“讨论”让我相信我应该能够简单地设置单元格的 textLabel 而无需重新加载行、节或表。
iphone - 在获取请求中不包括临时对象
我有一个处理表视图的获取结果控制器,我遇到了一个问题,它还显示了已在上下文中创建但未保存到商店的新托管对象。我只想列出已保存的对象。
我尝试在获取请求中将 setIncludesPendingChanges 设置为 NO,但它不起作用!
任何建议将不胜感激!
谢谢,
麦克风
iphone - iphone fetchRequest 子实体?
如果我从“父级”获取数据并将其分配给 fetchresultscontroller,我仍然需要调用
在我的 cellForRowAtIndexPath 中获取子数据。这是正常的事情吗,还是我可以在我的 fetchedresultscontroller 中从孩子那里获取真实数据?
iphone - 如何观察托管对象上下文
每当我在应用程序的第一个选项卡中更改对象时,更新都会在选项卡 2 中自动更新,因为它使用了 fetchedResultsController。现在我有第三个标签也应该更新自己,但我该怎么做呢?
我在第三个选项卡中只有一个 nsmangedObjectContext 来获取适当的数据。每当此上下文中的对象发生更改时,我如何接收通知?
我也在努力解决如何让我的数据获取更有效的问题,因为选项卡 2 和 3 使用相同的数据集。我目前正在选项卡 3 中进行另一次提取,以获取与选项卡 2 相同的数据。我不知道如何在不干扰 fetchedresultscontroller 的情况下使用来自 tab2 的数据。
有关此主题的信息将不胜感激!
ios - tableView 和普通视图(相同的数据对象)
我不知道如何在两个标签栏项目之间共享相同的数据。一个选项卡使用 nsfetchedresultscontroller,另一个表只是一个普通视图,应该使用与我的 fetchedresultscontroller 相同的数据。
如果我有两个法线视图,我只会让我的对象成为单例,并让表格视图和普通视图使用相同的数据。
但现在我有一个 fetchresultscontroller 和一个正常的视图。我正在考虑只为我的普通视图使用另一个 fetchedresultscontroller,所以我拥有所有功能,例如获取缓存、通知等。
我知道 fetchresultscontroller 应该用于 tableview,但我想我也可以将它用于非 tableview。
有人知道我应该怎么做吗?我找不到苹果关于这件事的文档。
iphone - NSFetchedResultsController 崩溃
以下步骤会导致 NSFetchedResultsController 崩溃。
- 我尝试将第一个元素添加到 NSFetchedResultsController 支持的 TableView。
- 我创建了一个临时 MO 对象并显示一个模态视图窗格以添加新对象。
- 在添加工作表(模态视图控制器)上,我按下取消按钮以丢弃新元素。
- 在取消按钮的 CancelAction 回调中,我删除了我创建的新临时对象。
- 此处的代码与 Apple 的 Core Data 示例代码完全相同。我唯一的额外代码是在 Add 工作表被解除后调用 [tableView reloadData] 。
- 只有当我尝试添加第一个元素时才会导致崩溃,因为它与 NSFetchedResultsController 中的错误部分计数有关。
这会导致下面给出的崩溃。如果我删除对 reloadData 的冗余调用,则崩溃是不可见的。如果我将 reloadData 调用添加到 Recipe 示例代码数据,崩溃也会发生在那里。
NSFetchedResultsController 是否存在已知问题?
2009-09-13 18:22:45.600 食谱 [14926:20b] * 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“* -[NSCFArray objectAtIndex:]: index (0) beyond bounds (0)”
objective-c - 带搜索的 NSFetchedResultsController
过滤数据的最佳做法是什么NSFetchedResultsController
?每次搜索栏的文本更改时,我是否需要重新初始化它?
我正在使用一个UISearchDisplayControllers
并且我正在实施:
谢谢。
iphone - 非法尝试在不同上下文中的对象之间建立关系“xyz”
我使用 Apple 的CoreDataBooks
示例应用程序作为在后台将数据拉入辅助托管对象上下文的基础,然后将该数据合并到主要托管对象上下文中。
我要提取的数据是与实体(称为“所有者”)Book
具有一对一关系的实体。Owner
实体与(称为“书籍”)Owner
具有一对多关系。Book
我的数据是以下形式的 XML 文档:
Book One
throughBook N
与一个Owner
( "alexpreynolds, 123456"
) 相关联。
我将其解析为一个Owner
实例和一个NSMutableSet
由实例组成的Book
实例。
当我第一次尝试保存时,它保存得很好,合并的数据显示在表格视图中。
然而,在第二次保存时,当 XML 内容包含一本新书时,它就不起作用了。
这是发生的事情:
然后我尝试加载一个 XML 文档,该文档包含一个Book
尚未在主托管对象上下文中的新对象。新Book
的使用与其他sOwner
关联的相同。Book
我有一些例程可以挑选出这个唯一的Owner
托管对象(我已经在我的主托管对象上下文中拥有)和在主 MOC 中找不到Book
的唯一对象。
由此,我Book
在辅助 MOC 中创建了一个新对象,并将其“ owner
”关系设置为指向Owner
我在主 MOC 中找到的唯一对象。
当我保存时,我收到以下错误:
如何Book
在辅助 MOC 中创建一个新实体,以便我仍然可以将它与Owner
主 MOC 中预先存在的实体相关联?