0

フィルターで除外しようとしている、NSMutableArraycomboData という名前があります。

  NSMutableArray * filteredVersion = [[NSMutableArray alloc] init];
  NSPredicate    *predicate        = [NSPredicate predicateWithFormat:@"id >= %d AND id <= %d",1,7];
  [filteredVersion setArray: [comboData filteredArrayUsingPredicate:
                          predicate]
                        ];

unknown selectorエラー メッセージが表示される

  [__NSCFNumber length]: unrecognized selector sent to instance 0xa966350

2行目。私が(新たに)欠けているものは何ですか?

[編集]

コンボデータは次のとおりです(デバッグ領域に出力されます)

combo data (
    {
    id = 1;
    label = "A";
    name = '';

},
    {
    id = 2;
    label = "B";
    name = '';

},
4

1 に答える 1

1

OK、あなたの配列comboDataは で満たされていNSDictionariesます。

NSDictionaryはオブジェクトのみを含めることができます。

キーが数字を参照しているように見えるidので、NSNumber.

あなたの述語では、それをintとして扱っています。

このようなものが必要になります...

// erm... not sure. Can you not just use a comparator?
// NSPredicate *predicate = [NSPredicate predicateWithFormat:@"id >= %d AND id <= %d",1,7];

NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(NSDictionary *dictionary, NSDictionary *bindings) {
    NSNumber *idNumber = dictionary[@"id"];

    return [idNumber intValue] >= 1 && [idNumber intValue] <= 7;
}];

これはうまくいくはずです。

現在の述語の代わりにこれを使用してください。

于 2013-10-02T15:32:29.020 に答える