Pregunta

Tengo el error - [NSCFString stringValue]: selector no reconocido enviado a la instancia 0x1578c al ejecutar este código No entiendo que estoy haciendo mal nombre es un 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]);
¿Fue útil?

Solución

En primer lugar, puede soltar el mensaje [... stringValue]. No es necesario, ese objeto ya es una cadena. En segundo lugar, debe usar% @ en lugar de% s para los objetos NSString.

Nota:% @ funciona para cualquier objeto, para el caso. Prueba

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

Confía en mí, vale la pena intentarlo.

Otros consejos

No hay " stringValue " método en NSString, de ahí el error.

Si realmente desea el valor como una cadena en C, el método que desea es UTF8String. Sin embargo, para su caso de registro, debe cambiar% s a% @ y registrar el objeto NSString directamente.

No es necesario usar stringValue en este caso ( editar: en realidad es un error, como otros han publicado, porque NSString no tiene un método stringValue ).

El objeto que sale de su diccionario ya es un NSString . Lo que debe hacer es permitir que la función NSLog maneje el objeto como un objeto de cacao adecuado. El código para eso es % @ , no % s , ya que % s es para cadenas de estilo C.

Así es como debería verse:

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"]);
}

Si tiene propiedad para la variable de nombre, use self.name cuando realice cualquier operación en ella, de lo contrario no tiene sentido declarar la propiedad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top