8

私は、paidのエンティティOrderを持っています。これはブール値です。NSFetchedResultsControllerが動作していないsectionNameKeyPath

UITableViewにすべての注文を表示したいが、私はそれらを2つのセクション: '有料'と '有料'にグループ化したい。だから私は、私はちょうどこのように、sectionNameKeyPathとして「有給」を与えるだろうと思って:、これは最初のセクションが支払わ= NOですべての注文が含まれている2つのセクションにつながる私の推論による

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

(0) 2番目のセクションはpaid = YES(1)となります。

しかし、新しい注文をpaid = YESで追加すると、最初のセクションに表示されます。フェッチされた結果コントローラデリゲートをチェックインすると、indexPath [0,0]を持つ新しいレコードが作成されていることがわかります!なぜそれが第2セクションに挿入されないのですか?

答えて

12

NSFetchedResultsControllerで使用されるNSFetchRequestにソートデスクリプタの配列を追加してみてください。

最初に支払われたブール値をソートし、次に並べ替えるものをソートしたいと思うでしょう。

スウィフト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 
+0

あなたはBOSSです! – raed

+0

また、追加されたソート記述子(単一の場合)は、キーパスの生成に使用されたソート記述子と異なる必要があります – jackal

+0

実際にその問題の答えは何ですか?私は何をすべきですか? –

関連する問題