How to use an NSString to create an NSPredicate?

0

I'm creating a custom search, however I'm creating the predicate strings as an NSString. But I'm getting an error.

Code used:

NSMutableString* escolhasSIM = [[NSMutableString alloc]init];

// Posição 0
    if ([[arrayEscolhas objectAtIndex:0] isEqualToString:@"sim"]) {

         [escolhasSIM appendFormat:@"pizza==sim AND "];
    }


    // Posição 1
    if ([[arrayEscolhas objectAtIndex:1] isEqualToString:@"sim"]) {

        [escolhasSIM appendFormat:@"refrigerante==sim AND "];
    }

// Remove os 5 últimos caracteres para limpar a string
NSString *escolhasSimLimpo = [escolhasSIM substringToIndex:[escolhasSIM length]-5];

// ficando @"pizza==sim AND refrigerante==sim"

// Criando NSPredicate

NSPredicate* argumentosBusca = [NSPredicate predicateWithFormat: escolhasSimLimpo];

But I'm getting the following error:

  

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to generate SQL for   predicate (pizza == yes) (problem on RHS) '

    
asked by anonymous 27.03.2015 / 18:37

1 answer

0

I made the mistake of including PROPERTY next to SIM.

In fact you should put the argument that will be compared between quotation marks, getting the code like this:

NSMutableString* escolhasSIM = [[NSMutableString alloc]init];

// Posição 0
    if ([[arrayEscolhas objectAtIndex:0] isEqualToString:@"sim"]) {

          // Modo ERRADO
          //[escolhasSIM appendFormat:@"pizza==sim AND "];

            // Modo CORRETO
            [escolhasSIM appendFormat:@"pizza==\"sim\" AND "];
    }


    // Posição 1
    if ([[arrayEscolhas objectAtIndex:1] isEqualToString:@"sim"]) {

        // Modo ERRADO
        //[escolhasSIM appendFormat:@"refrigerante==sim AND "];

        // Modo CORRETO
          [escolhasSIM appendFormat:@"refrigerante==\"sim\" AND "];
    }

// Remove os 5 últimos caracteres para limpar a string
NSString *escolhasSimLimpo = [escolhasSIM substringToIndex:[escolhasSIM length]-5];

// ficando @"pizza==sim AND refrigerante==sim"

// Criando NSPredicate

NSPredicate* argumentosBusca = [NSPredicate predicateWithFormat: escolhasSimLimpo];
    
27.03.2015 / 18:50