【问题标题】:dynamically change sort descriptor for Fetched results controller动态更改获取结果控制器的排序描述符
【发布时间】:2010-06-19 14:24:50
【问题描述】:

有没有办法为 iOS 上的获取结果控制器动态设置排序描述符?

例如,我需要根据导航标题栏中分段控件的设置对返回给我的核心数据结果进行排序。用户可以单击分段控件按价格或优先级排序。

然后,我需要获取的结果控制器返回并显示核心数据信息,这些信息根据该分段控制值分类为多个部分。

我最初知道如何设置排序描述符,但我不确定如何动态更改/更新它。由于- (NSFetchedResultsController *)fetchedResultsController 函数是延迟加载的,它不会总是只返回第一次创建的frc(从而返回初始排序描述符设置)吗?

我是否可以将分段控制值存储在 sharedPreferences 中,然后在更改时将我的 fetchedResultsController 设置为 nil 以便生成新的?然后在 fetchedResultsController 函数中,我可以根据 sharedPreferences 设置创建我的 sortDescriptor 吗?

【问题讨论】:

    标签: iphone objective-c core-data nsfetchedresultscontroller


    【解决方案1】:

    你可以控制它。例如,您可以在分段控件更新时释放控制器并在您的表上调用 reload。这将导致使用新的排序重新构建控制器。

    还有其他解决方案,但它们取决于您的应用设计。

    【讨论】:

    • 啊马库斯,您在 PragProg 中的提要教程是我在 NSFetchedController 上阅读的第一篇文章,非常感谢您的回复和那篇文章。因此,只需释放我获取的控制器并将其设置为 nil 并允许 ViewController 基于分段控件重新生成它就很容易了。听起来很容易。谢谢。
    • 在使用 fetched results controller 时是否只是调用 [self.tableView reloadData] 的问题,还是需要其他方法通过 FRC 重新加载数据?
    • NSFetchedResultsController 上调用-performFetch: 后,您可以在桌子上调用-reloadData。不需要其他任何东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    相关资源
    最近更新 更多