首页 文章

使用没有UITableViewController的NSFetchedResultsController

提问于
浏览
4

我在尝试使用没有相应UITableViewController的NSFetchedResultsController时遇到了问题 .

根据苹果documentation

“NSFetchedResultsController旨在有效地管理从Core Data获取请求返回的结果,以便为UITableView对象提供数据 . ”

所以我首先研究了在没有UITableViewController的情况下使用NSFetchedResultsController是否可取并遇到this Stackoverflow post,其中得出的结论是,至少在某些情况下,这不是一个坏主意 .

但现在我出现了.2631027_t . 问题是当UITableViewController不存在时,NSFetchedResultsController返回的对象没有IndexPaths . 我在stackoverflow post中记录了这个问题 . (注意这是问题的简化,在某些情况下对象确实有IndexPaths,但是我遇到了足够的问题,认为期望没有UITableViewController的IndexPaths是个坏主意 . )

没有IndexPaths,我无法按排序顺序访问返回的对象,也无法访问特定对象 . 所以我要找的是获取NSFetchedResults控制器以返回具有IndexPaths的对象的方法,或者是访问对象的替代方法 . (或许我根本不应该使用NSFetchedResultsController?)

重新替代方法,一种解决方法是将fetchedObjects传递给数组,然后使用该数组 . 但根据我的经验,创建FRC对象的新指针总会导致问题 . 我想每次我尝试用自己的指针保留NSManagedObject时,它最终都会导致错误 .

仅供参考,我想创建的是一个类似于照片中导航栏的导航栏 . 如果您想象可以动态地将照片添加到照片应用程序中,那么条形图中的照片将由NSFetchedResultsController管理是有意义的 - 这样添加新照片就会动态添加到条形的末尾,就像如何添加新对象动态添加到UITableView .

感谢您的任何想法,您可以帮助我!

UPDATE 这个问题(暂时)通过使用 - [NSFetchedResultsController fetchedObjects] objectAtIndex:]来解决

3 回答

  • 4

    这可以通过使用 - [NSFetchedResultsController fetchedObjects] objectAtIndex:]来解决

    NSFetchedResultsController表现为托管对象的集合,类似于NSArray,使其易于使用 . 实际上,它公开了一个名为fetchedObjects的只读属性,该属性的类型为NSArray,以便更容易访问它所获取的对象 .

  • 1

    使用 -[NSFetchedResultsController fetchedObjects] 有什么问题吗?我通常必须保留 NSManagedObject (它们根据需要被取出并出现故障),这可能是问题所在 .

  • 3

    (注意这是问题的简化,在某些情况下对象确实有IndexPaths,但我遇到了足够的问题,认为期望没有UITableViewController的IndexPaths是个坏主意 . )

    UITableView和NSFetchedResultsController都使用NSIndexPath的NSIndexPath UIKit Additions扩展 . 该扩展类生成具有显式section和row属性的indexPaths . 应使用以下方法手动创建这些路径:

    +[NSIndexPath indexPathForRow:inSection:]

    如果使用其他方法创建indexPath,则接收方必须推断section和row属性 . 他们通常会正确地推断,但错误的可能性仍然存在 .

相关问题