2017-07-24 104 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]