Pergunta

Estou fazendo uma estrutura e tenho esse código (conditions é um nsdictionary):

for (NSString *key in conditions) {
    id value = [[conditions valueForKey:key] retain];


    // Check if number or string
    if ([value class] == [NSString class]) {
      conditionsString = [NSString stringWithFormat:@"%@='%@' ", key, value];
    } else {
      conditionsString = [NSString stringWithFormat:@"%@=%@ ", key, value];
    }
  }

Se o value é uma NSString, as cotações devem ser adicionadas; caso contrário, os códigos não devem ser adicionados. No entanto, se não for um nsstring, não sei o tipo de dados de value, como poderia ser nsnumber, nsinteger, int, flutuar, duplo, etc ... Eu não posso simplesmente usar %@ ou %d Mas tenho certeza de que alguém sabe como fazer isso? Obrigado.

Foi útil?

Solução

dê uma olhada em isto.

EDIT: No seu caso, é bem fácil, já que o nsdictionary pode conter apenas nsObjects. Então %@ faria o truque.

Outras dicas

Você pode verificar a classe (KindOfClass) e depois usar o formatador apropriado.

por exemplo

if ( [myObj isKindOfClass:[NSString class]] )
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top