我在尝试使用没有相应 UITableViewController 的 NSFetchedResultsController 时遇到问题。
根据苹果的文件:
“NSFetchedResultsController 旨在有效地管理从核心数据获取请求返回的结果,以便为 UITableView 对象提供数据。”
因此,我首先研究了在没有 UITableViewController 的情况下使用 NSFetchedResultsController 是否可取,并遇到了这篇 Stackoverflow 帖子,得出的结论是,至少在某些情况下,这不是一个坏主意。
但是现在我遇到了一个问题,当相应的 UITableViewController 不存在时,NSFetchedResultsController 的行为会有所不同。问题是当 UITableViewController 不存在时,NSFetchedResultsController 返回的对象没有 IndexPaths。我已经在stackoverflow 帖子中记录了这个问题。(请注意,这是对问题的简化,在某些情况下,对象确实具有 IndexPaths,但我遇到了足够多的问题,我认为在没有 UITableViewController 的情况下期望IndexPaths 是个坏主意。)
如果没有 IndexPaths,我将无法按排序顺序访问返回的对象,也无法访问特定对象。所以我正在寻找的是一种让 NSFetchedResults 控制器返回带有 IndexPaths 的对象的方法,或者是访问对象的另一种方法。(或者也许我根本不应该使用 NSFetchedResultsController?)
重新替代方法,一种解决方法是将 fetchedObjects 传递给数组,然后使用该数组。但根据我的经验,创建指向 FRC 对象的新指针总是会导致问题。我认为每次我尝试使用自己的指针保留一个 NSManagedObject 时,它最终都会导致一个错误。
仅供参考,我正在尝试创建一个导航栏,类似于照片中的导航栏。如果你想象你可以动态地将照片添加到 Photos 应用程序中,那么将栏中的照片由 NSFetchedResultsController 管理是有意义的——这样添加的新照片将被动态添加到栏的末尾,就像添加新对象如何动态添加到 UITableView。
感谢您提供任何可以帮助我的想法!
更新这个问题(暂时)通过使用 -[NSFetchedResultsController fetchedObjects] objectAtIndex:] 解决