2016-05-05 6 views
2

コアデータの整数値を保持する文字列属性に述語を設定して整数値を取得する方法。 私は複数の条件のための化合物の述語を使用していますが、コードの一部は、次の..コアデータの整数値を保持する文字列属性の述語を設定する方法

NSPredicate *categoryPredicate = [NSPredicate predicateWithFormat: @"rating >= %@ AND rating <= %@",ratingFrom.text,ratingTo.text]; 
[compoundPredicateArray addObject: categoryPredicate ]; 

「評価」属性は、データベース内の文字列型です。私は格付けの指定された範囲から格付けを得る必要があります&格付けはテキストフィールドになります。

"1"から "10"までのすべてのレーティングを1から10の間でフェッチする必要があります。これを達成するには、属性タイプをnumberに変更しないでください。

どれヘルプappreciated..Thanks

答えて

0

私はこの

はあなたが発現との間に試すことができNSStringに値を変換し、このコード

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"string CONTAINS[c] %@",searchText]; 
+0

感謝を。その特定の要素が含まれているかどうかだけをチェックします。しかし、私は範囲を取得する必要があります。 – Boobalan

-1

を入れて確認したがしようとしていないです:

BETWEEN左辺の式は、 の値は右側に指定されています。右側は の2つの値の配列(配列を指定して順序を指定する必要があります)で、上位には と下限を与えます。たとえば、1 BETWEEN {0、33}、または$ INPUT BETWEEN {$ LOWER、$ UPPER}です。次の例に示すように、Objective-Cで、あなたは BETWEEN述語を作成することができます。

をだからあなたのコードは次のようになります。評価は、ある場合に

NSPredicate *betweenPredicate = 
    [NSPredicate predicateWithFormat: @"rating BETWEEN %@", @[ratingFrom, ratingTo]]; 

ratingFrom、ratingToはするNSNumberのインスタンスでなければなりませんNSNumber。

0

理想的には、この属性を文字列ではなく数字に変更する必要があります。それが不可能な場合でも、次は数としてそれを治療するためのCoreData(というかSQLiteの)を強制する必要があります:あなたの努力のための

NSPredicate *categoryPredicate = [NSPredicate predicateWithFormat: @"add:to:(rating,0) >= %d AND add:to:(rating,0) <= %d",ratingFrom.text.intValue,ratingTo.text.intValue]; 
+0

これを行うには、属性をnumberに変更します。しかし、私はあなたの提案を試みた、それは動作していません。 – Boobalan

関連する問題