我正在开发我的第一个Core Data支持的应用程序,并且无法确定如何正确设置NSFetchedResultsController。我有两个实体:
/-----------\ /-----------\
| List | | ListItem |
| --------- | | --------- |
| listName | | itemName |
| --------- | | --------- |
| listItems |<---->> | list |
\ --------- / \ --------- /
我有两个视图(每个视图都继承自UITableViewController
,每个视图都由NSFetchedResultsController
支持)。第一个视图是UITableView
,显示所有List
项。选择行时,会按下第二个视图。
我在视图控制器中有一个名为@property (strong, nonatomic) List *selectedList
的属性,我在推送视图之前使用选定的List
进行分配。
我在设置时遇到的问题是让第二个视图仅显示其父级为选定ListItem
的{{1}}个对象。我知道这属于List
中的某个地方,但我不知道在哪里。
这是我的代码:
NSFetchedResultsController
我是否需要添加某种排序描述符,或者答案是否与其他内容有关?谢谢!
答案 0 :(得分:1)
您需要NSPredicate
选择其中ListItem
与selectedList
属性相匹配的list
。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"list == %@", self.selectedList];
[fetchRequest setPredicate:predicate];
这里有一点需要注意,那就是谓词会根据selectedList
而改变,这意味着获取请求会发生变化。如果您要更改获取请求,Apple会在NSFetchedResultsController
Class Reference。
您不能简单地更改获取请求以修改结果。如果 要更改获取请求,您必须:
如果您使用的是缓存,请将其删除(使用
+deleteCacheWithName:
)。通常,如果要更改提取请求,则不应使用缓存。
- 醇>
更改提取请求。调用
-performFetch:
。