簡體   English   中英

帶有 NSFetchedResultsController 的 sectionNameKeyPath 不起作用

[英]sectionNameKeyPath with NSFetchedResultsController not working

我有一個已paid財產的實體Order ,即 boolean。

我想在UITableView中顯示所有訂單,但我想將它們分為兩個部分:“未支付”和“已支付”。 所以我想我只是把“付費”作為sectionNameKeyPath ,像這樣:

fetchedResultsController = [[NSFetchedResultsController alloc]
         initWithFetchRequest:fetchRequest
         managedObjectContext:managedObjectContext
           sectionNameKeyPath:@"paid"
                    cacheName:nil];

根據我的推理,這將導致兩個部分,其中第一部分包含已付款 = NO (0) 的所有訂單,第二部分包含已付款 = YES (1)。

但是,當我添加一個已付款 = YES 的新訂單時,它會顯示在第一部分。 當我簽入獲取的結果 controller 委托時,我可以看到創建了 indexPath [0,0] 的新記錄? 為什么不插入第二部分?

嘗試將排序描述符數組添加到與您的 NSFetchedResultsController 一起使用的 NSFetchRequest。

您首先要對付費的 boolean 進行排序,然后再按其他任何您想要排序的內容進行排序。

Swift 3 示例:

fetchRequest = ... // <- instantiate your fetch request

let sortByPaid = NSSortDescriptor(key: "paid", ascending: true)
let sortByCustomerName = NSSortDescriptor(key: "customer.name", ascending: true) // <- if Order had a relationship to Customer that had an attribute name 
fetchRequest.sortDescriptors = [sortByPaid, sortByCustomerName]

// now instantiate fetchedResultsController as in the question above

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM