私はスタンフォード大学を使用UICoreDataTableViewController
してデータベースのフェッチを実行しています。
私のメインビューでは、ユーザーはsearchBarにfloatを入力し、検索をタップすることで、述語は最大値と最小値の間の値のみをフェッチするようにします(つまり、3から10の間のfloat)。
メインビューでは、エンティティを使用して文字列を作成し、検索を実行する必要がある属性を使用して文字列を作成し、最後に述語(xより大きくyより小さい)を含む配列を作成します。文字列と配列をに渡しますprepareForSegue
。それはかなりうまくいきます。
ユーザーが数字を入力しなくても、すべての値を表示できるようにしたいと思います。そこで、prepareForSegue
NSLogに従って正しく呼び出される条件を追加しました。
問題は、属性の一部の値がゼロであるということです(私はそれを確認しました)。prepareForeSegue
次の述語配列を渡す場合:
prepredicateArrayToPass=[NSArray arrayWithObject:[NSPredicate predicateWithFormat:@"%@ !=nil", attributeToPass]];
フェッチは、nil値を0として解釈して実行されるため、表示されます。良くない。
ただし、述語をコピーしてsetupFetchedResultsController
メソッドに直接貼り付けるUICoreDataTableViewController
と、完全に機能し、nil値は表示されません。
に条件を直接追加すると、UICoredataTableViewController
どちらも機能しません。
私はそれをさらに進める方法を本当に知りません。どんな助けでも大歓迎です。
ありがとう。