情報、名前、日付などを格納する単純なCoreData
アプリケーションがあり、すべて動作しています。検索方法があり、NSArrayController
のsetFetchPredicate
が使用され、結果が表に表示されます。これは機能しています。NSArrayController setFetchPredicate
このメソッドの最後に追加コードを追加すると、メソッドが終了する直前にNSArrayControllerのカウントを取得するための単純な行が追加されました。
[searchArrayController setFetchPredicate: searchPredicate];
[searchArrayController rearrangeObjects];
NSlog(@"Count = %lu", (unassigned long)[[searchArrayController arrangedObjects] count]);
結果:= 1200
を数える(1200データベース内のオブジェクトの数である。)
表が正しく表示、すなわちデータオブジェクトの正確な数は、しかしNSLog
数を表示データベース全体です。
私はメソッドの最初にNSLog
を配置しました。 2回目に検索を実行すると、2番目のNSLog
には正しい数のオブジェクトが表示されます。
Beginning method:
NSlog(@"A-Count = %lu", (unassigned long)[[searchArrayController arrangedObjects] count]);
...
[searchArrayController setFetchPredicate: searchPredicate];
[searchArrayController rearrangeObjects];
NSlog(@"B-Count = %lu", (unassigned long)[[searchArrayController arrangedObjects] count]);
end of method
結果:
最初の実行:
A-カウント= 1200
B-カウント= 1200
NSTable
ディスプレイオブジェクトの正しい数
セカンドラン:
A-カウント= 4(これは検索パラメータの正しい)
B-カウント=
それはNSArrayControllerはまだ場合、述語に基づいてフィルタリングされていない方法も初めて出現4 B-Count NSLog
が呼び出されます。しかし、これはメソッドの最後で、NSArrayControllerをこの時点でフィルタリングする必要があります。
私はここで何か簡単なものを見逃している必要があります - どんな助けもありがたいです。
は
これは、fetchPredicateではなくfilterPredicateを使用する必要がありました - ありがとうございます。 – littleDrummerBoy