Pergunta

Eu tenho o erro - [NSCFString stringValue]: selector não reconhecido enviada à instância 0x1578c ao executar este código Eu não entendo o que estou fazendo de errado nome é um NSString

self.searchValues= [[NSMutableArray alloc] init];
name=@"Bob";
if(self.name!=nil)
   [searchValues addObject: [NSMutableDictionary dictionaryWithObjectsAndKeys:@"Name",@"Label",self.name,@"Value",nil]];
NSLog(@"Array value : %s",[[[searchValues objectAtIndex:0] objectForKey:@"Value"] stringValue]);
Foi útil?

Solução

Em primeiro lugar, você pode soltar a mensagem [... stringValue]. Não é necessário, esse objeto já é uma string. Em segundo lugar, você deve usar% @ em vez de% s para NSString objetos.

Nota:% @ funciona para qualquer objeto em tudo, para essa matéria. Tentar

NSLog(@"Array: %@", searchValues);

Trust me, vale a pena tentar.

Outras dicas

Não existe um método "stringValue" na NSString, assim o erro.

Se você realmente quer o valor como um C-string, o método que você quer é UTF8String. Para o seu caso de registro, porém, você deve apenas alterar% s para% @, e registrar o objeto NSString diretamente.

Não há necessidade de uso stringValue neste caso ( Editar: é realmente um erro, como outros já publicados, porque NSString não tem um método stringValue).

O objeto que sai de seu dicionário já é uma NSString. O que você deve fazer é permitir que a função NSLog para lidar com o objeto como um objeto de cacau adequada. O código para isso é %@, não %s, desde %s é para cordas de estilo C.

Aqui está como ele deve procurar:

self.searchValues = [[NSMutableArray alloc] init];
name=@"Bob";
if(self.name!=nil)
{
    [searchValues addObject: [NSMutableDictionary
           dictionaryWithObjectsAndKeys:@"Name", @"Label",
                                        self.name,@"Value",
                                       nil]];

    NSLog(@"Array value: %@", [[searchValues objectAtIndex:0]
                                 objectForKey:@"Value"]);
}

Se você tem propriedade para variável nome, em seguida, usar self.name ao realizar qualquer operação em que caso contrário não há sentido de declarar a propriedade.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top