Core data NSFetchresultsController多谓词

Core data NSFetchresultsController多谓词,core-data,nsfetchedresultscontroller,Core Data,Nsfetchedresultscontroller,我有一个CoreData模型对象,其中包含一个名为sessionID的类型(每次用户在应用程序中使用某个功能时都会生成uuid)——数据会源源不断地进入,并在每个会话中使用相同的sessionID进行记录 记录的数据如下所示:x行数,比如sessionID:…1,然后y个sessionID的记录数:…2 ``` 等等。 ``` 我正在使用NSFetchResultsController在UITableView上向用户显示记录,(它可以正常工作),但是,我希望有一个选项可以在所有记录和唯一sess

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

记录的数据如下所示:x行数,比如sessionID:…1,然后y个sessionID的记录数:…2

```

等等。 ```

我正在使用NSFetchResultsController在UITableView上向用户显示记录,(它可以正常工作),但是,我希望有一个选项可以在所有记录和唯一sessionID作为行显示在表视图上之间切换。NSFetchResultController是否可以实现这一点

虽然我将请求设置为返回不同的结果,但它似乎不起作用,我仍在获取所有记录

```


```

returnsDistinctResults
不适用于fetchedResultsController。使用fetchedResultsController的
sectionNameKeyPath
sessionId
分组

结果将是许多部分,每个部分包含具有相同sessionid的条目

如果要显示所有条目,则不显示节的标题,并显示每个节中的每一行。如果只想显示SessionId,则每节显示一行。您可以通过查看节中的第一个元素来获取sessionId


这根本不需要您更改fetchedResultsController—您只需要更改显示信息的方式。根据您的UI/UX,您可能会发现拥有两个表视图更容易,切换会显示和隐藏它们。或者,在控制器中设置BOOL并在切换模式时调用
[tableview reloadData]
可能更容易。

您可以随时更改提取请求,只需确保删除缓存即可。可能存在重复的
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, ...
[fetchRequest setEntity:entity];
[fetchRequest setReturnsDistinctResults:YES];
[fetchRequest setPropertiesToFetch:@[@"session_id"]];