0
所以我有一個核心數據實體,我試圖使用NSFetchedResultsController在表視圖中顯示。有關模型屬性看起來是這樣的:NSFetchedResultsController部分按關係分組
後
- parentPost(OTM關係)
- childPosts(parentPost的倒數)
- rootParent(OTM關係,指出的頂部樹)
- allChildren(rootParent的反轉,顯示根對象的扁平化子項)
這些關係形成了一個樹,其中根Post是parentPost = nil的那棵樹。我希望顯示的方式是,每個根帖子是一個部分中的第一個項目,然後其餘的行是扁平化的根子項列表。
這是很容易做這樣的讀取請求手動排列:
let fetchRequest = NSFetchRequest(entityName: Post.entityName())
fetchRequest.predicate = NSPredicate(format: "parentPost = NULL")
fetchRequest.sortDescriptors = sortOrder.sortDescriptors
fetchRequest.fetchBatchSize = 20
fetchRequest.relationshipKeyPathsForPrefetching = ["allChildren"]
然後我可以建立從每個結果的部分陣列做這樣的事情:
let sectionPost = self.fetchedResultsController!.fetchedObjects![section] as! Post
var sectionArray = NSMutableArray(object: sectionPost)
var filteredSet = sectionPost.allChildren.filteredOrderedSetUsingPredicate(NSPredicate(format: "approved != FALSE AND postDeleted != TRUE AND spam != TRUE"))
sectionArray.addObjectsFromArray(filteredSet.array)
問題是:在FRC內部有沒有辦法做到這一點?從FRC中維護一個單獨的數據源非常複雜,我寧願找到一種方法來處理這個請求,但是我沒有看到處理這個問題的好方法。
如何添加一個fetched屬性解決這個問題?區分FRC結果的唯一方法是sectionNameKeyPath屬性,而且我不能想象你所說的將如何工作。你能提供一個例子嗎? – smyrgl
順便說一句,我使用Mogenerator生成類文件,所以關係已經是Post對象的關鍵。但我仍然沒有看到如何使它們成爲使用這些屬性的部分。 – smyrgl
編輯了答案... –