2017-07-24 106 views
0

我有一个CoreData模型对象,其中包含一个名为sessionID的类型(每次用户在应用程序中使用某个功能时都会生成一个uuid) - 数据不断进入并为每个会话记录相同的sessionID。NSFetchresultsController多谓词

记录的数据是这样的:用线的X号可以说会话ID:... 1和对会话ID记录,则Y号:... 2

```

sessionID: 0000-0000-0000-0000-0001, ... 
sessionID: 0000-0000-0000-0000-0001, ... 
sessionID: 0000-0000-0000-0000-0002, ... 
sessionID: 0000-0000-0000-0000-0002, ... 
sessionID: 0000-0000-0000-0000-0002, ... 

等等 ```

我使用NSFetchResultsController呈现记录上一个UITableView用户,(和它的作品),但我想有所有的记录,只有表现之间的切换选项表vi中唯一的sessionID作为行EW。这可能与NSFetchResultController?

虽然我设置的请求返回不同的结果,但它似乎不工作,我仍然获取所有记录。

```

[fetchRequest setEntity:entity]; 
[fetchRequest setReturnsDistinctResults:YES]; 
[fetchRequest setPropertiesToFetch:@[@"session_id"]]; 

```

+0

您可以随时更改提取请求,只需确保缓存被删除即可。 – sschale

+0

[为什么我们无法在NSFetchedResultsController上更改FetchRequest?](https://stackoverflow.com/questions/7200855/why-we-cant-change-fetchrequest-at-nsfetchedresultscontroller) – sschale

回答

0

returnsDistinctResults不为fetchedResultsController工作。使用fetchedResultsController的sectionNameKeyPath来分组sessionId

结果将是很多部分,每个部分包含具有相同sessionIds的条目。

当您何时显示所有条目,然后不显示该部分的标题并显示每个部分的每一行。如果只想显示SessionId,则显示的每行一行。您可以通过查看该部分中的第一个元素来获取sessionId。

这不需要你根本改变fetchedResultsController - 你只是在改变你如何显示信息。根据您的用户界面/用户体验,您可能会发现拥有两个桌面视图和切换显示并隐藏它们更容易。或者在您的控制器中设置BOOL可能更容易,在切换模式时请拨打[tableview reloadData]