2017-04-17 3 views
1

私は 'type'というコアデータエンティティ属性を持っています。コアデータの整数型なので、NSNumberを抜き出して値を特定の値のためにフィルタリングしたいビットマップですNSNumberをビットマップとして比較するためにコアデータフェッチ要求述語を書き込む方法

私はこの行に沿ってNSPredicateを作成しようとしています

NSPredicate *typeOfFacilityPredicate = [NSPredicate predicateWithFormat:@"type AND %@ > %0",@6667, @0]; 

のXcodeの理由、 'NSInvalidArgumentException' キャッチされない例外によりにアプリを終了***私を与える場合: '形式の文字列を解析できません "タイプをAND%@>%の@"'

がそれですコア・データ・フェッチ述語述語でこの論理を実行することは可能ですか?または、タイプをいくつかの異なる値と比較する一連のORを作成する必要がありますか?またはおそらく値の配列を作成し、ANY型の行に沿って何かを実行してください。

正しく述語を書く方法については、感謝しています。

+0

ないので、テストすることはできませんが、試してみてください。しかし、これによって生成されたSQLを確認した、私ははるかに簡単な解決策は置き換える「AND」あなたの述語に「&」とするだけであることがわかり'[NSPredicate predicateWithFormat:@" bitwiseAnd:with:(type、%@)>%@ "、@ 6667、@ 0]'となります。この関数や類似の関数のドキュメントは、[NSExpression API reference](https://developer.apple.com/reference/foundation/nsexpression/1413747-init)に記載されています。 – pbasdf

答えて

1

は、だから私はこれをチェックすることができたと、確かに、

NSPredicate *typeOfFacilityPredicate = [NSPredicate predicateWithFormat:@"bitwiseAnd:with:(type, %@) > %@",@6667, @0]; 

が動作するはずです私のMacに戻りました。

NSPredicate *typeOfFacilityPredicate = [NSPredicate predicateWithFormat:@"type & %@ > %@",@6667, @0]; 
私のMacで
+0

おかげさまでありがとう、pbasf – SimonTheDiver

関連する問題