2016-09-12 16 views
0

プロパティ== intValueまたはプロパティ== nilの場合、NSNumber型のプロパティで選択値を試しています。 しかし、このコードでは、プロパティ== nilの値は無視されます。 ポイントは何ですか?NSPredicateでNSNumber == nilで値をフィルタリングする

NSPredicate *predicate = [NSPredicate predicateWithFormat: 
     @"(ANY region.beacons.major == %d OR ANY region.beacons.major = nil) 
     AND (ANY region.beacons.minor == %d OR ANY region.beacons.minor = nil)", 
     rangedBeacon.major.intValue, rangedBeacon.minor.intValue]; 

enter image description here

UPD:ANYだけNOTNULL選択し、この答えCore Data, NSPredicate, ANY key.path == nilによるので、ANY +ゼロ おそらく問題:

NSPredicate *predicate = [NSPredicate predicateWithFormat: 
           @"ANY region.beacons.minor = nil"]; 

UPD 2:最もシンプルがあまりにも動作しません。値。一つには

+0

なぜ重複しますか?私は 'uint16_t'のものを理解していません。なぜなら、それはオブジェクトではないからです。それはなぜNSNumberではないのですか? 'CLBeacon'オブジェクトを使っていませんか? – Larme

+0

私はこの質問を複製しました。なぜなら、breviosは現在複製されているとマークされており、間違った答えにリンクしています。はい、私はCLBeaconを使用しています。 –

+0

さて、リンクされた答えによれば、あなたのコードが反映されないように、あなたの述語には 'nil'ではなく' NIL'を書くべきです。さて、私が前のコメントで尋ねた他の質問はどうですか? – Larme

答えて

-1

、私はnilと比較しながら、あなたの代わりに平等==代入演算子=を使用している気づきます。

また、Singleton NSNullインスタンス[NSNull null]と比較してみてください。

+0

いいえ、動作していません。 –

+0

述語では、 '='は代入ではありません。 –

0

マイナーのプロパティの1つをテストするだけです。例えば:

NSPredicate *predicate = [NSPredicate predicateWithFormat: 
          @"region.beacons.minor.length = 0"]; 

NSPredicate *predicate = [NSPredicate predicateWithFormat: 
          @"region.beacons.minor.stringValue = nil"]; 

EDIT私はあなたがminorがnilであれば、任意の呼び出しは、同様ゼロに戻るか、数値型の0でしょうANY

を削除する必要があることを、認識しました。

+0

残念ながら両方とも動作していません –

関連する問題