objective-c - afhttprequestoperation - afnetworking example
convertir NSTaggedPointerString a NSString (5)
Había llamado a una interfaz de Baidu para verificar el Número de identificación, sin embargo, el valor de Sexo devuelto con sex = M
, sin "" alrededor de la M
en JSON, cuando uso NSString
en el módulo para almacenarlo y luego imprimir el nombre de la clase de este sex
propiedad, se imprimió como NSTaggedPointerString
, dudo cómo convertirlo en un String para usarlo. ¿Alguien tiene buenas ideas?
En mi caso, hijo {"cuenta": "123"} recibí un error. Resuelto
// Data was created, we leave it to you to display all of those tall tales!
// NSLog(@«data: %@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
NSDictionary * json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
if ([json isKindOfClass:[NSDictionary class]]){ //Added instrospection as suggested in comment.
NSArray *dicArray = json[@"count"];
NSLog(@"=:%@", dicArray);
}
Me he encontrado con lugares donde no se puede usar como una cadena, como cuando se crea un NSDictionary. En esos casos use stringWithString:
:
NSString* <# myNSString #> = [NSString stringWithString:<# myNSTaggegedString #>];
Tuve este mismo problema varias veces. Parece que la inferencia de tipos para NSDictionary no es una ciencia exacta. Lo que hago es preguntar específicamente si el objeto responde a un método en particular. Por ejemplo, si estoy haciendo un bucle a través de analizar JSON y estoy intentando acceder a un valor de tipo NSString
:
NSString * string;
if ([[dict objectForKey:@"value"] respondsToSelector:@selector(stringValue)]) {
string = [[dict objectForKey:@"value"] stringValue];
}
else {
string = [NSString stringWithString:[dict objectForKey:@"value"]];
}
documentFile.documentRevision = string;
NSTaggedPointerString
ya es una NSString
, es solo una subclase. Puede usarlo en cualquier lugar donde pueda usar una NSString
, sin conversión.
para Swift 3 o 4
String(stringInterpolationSegment: taggedPointerString)