NSPredicate не работает с массивом словарей - PullRequest
4 голосов
/ 31 мая 2011

У меня есть NSPredication с таким форматом: @"Status CONTAINS[cd] shipped"

У меня есть массив словарей, вот пример:

{
        {
        Category = "Category 4";
        Comp = "Category 4";
        Depth = 02;
        Grade = New;
        Length = 02;
        Location = "Thousand Oaks, CA";
        Name = "3ply Mat";
        Owner = "Owner 3";
        PUP = 2;
        Status = Shipped;
        "Unit Number" = 20110507113852351;
        Width = 02;
    },
        {
        Category = "Category 4";
        Comp = "Category 4";
        Depth = 02;
        Grade = New;
        Length = 02;
        Location = "Thousand Oaks, CA";
        Name = "3ply Mat";
        Owner = "Owner 3";
        PUP = 2;
        Status = Shipped;
        "Unit Number" = 20110516094641587;
        Width = 02;
    }
)

Но он возвращает пустой массив.Что я делаю неправильно?Спасибо

Ответы [ 2 ]

7 голосов
/ 31 мая 2011

Вы хотите:

[NSPredicate predicateWithFormat:@"Status =[cd] 'shipped'"];

Или:

[NSPredicate predicateWithFormat:@"Status =[cd] %@", @"shipped"];

Ваша проблема заключалась в том, что у вашего формата предиката было shipped, тогда как у него должно было быть 'shipped'. Отсутствие одинарных кавычек означало, что он пытался сравнить [dictionary valueForKey:@"Status"] с [dictionary valueForKey:@"shipped"] вместо строкового литерала @"shipped".

3 голосов
/ 31 мая 2011

Вы можете использовать ключевые слова MATCHES, CONTAINS и т. Д. Против строк.Так как Status не строка, я думаю, вам нужно проверить это следующим образом:

[NSPredicate predicateWithFormat:@"Status = %d", Shipped];
...