Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NSPredicate not working with array of dictionaries

I have an NSPredication with format like this:@"Status CONTAINS[cd] shipped"

I have an array of dictionary, here's an example:

{
        {
        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;
    }
)

But it's returning an empty array. What am I doing wrong? Thanks

like image 639
user635064 Avatar asked Dec 27 '22 19:12

user635064


1 Answers

You want:

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

Or:

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

Your problem was that your predicate format had shipped, when it should've had 'shipped'. The lack of singles quotes meant it was trying to compare [dictionary valueForKey:@"Status"] to [dictionary valueForKey:@"shipped"], instead of to the string literal @"shipped".

like image 57
Dave DeLong Avatar answered Jan 21 '23 08:01

Dave DeLong