J'avais appelé une interface de Baidu pour vérifier id Number, cependant la valeur de Sex renvoyée avec sex = M
, sans "" autour de M
en JSON, lorsque j'utilise NSString
dans le module pour le stocker, puis imprimer le nom de classe de cette propriété sex
Si NSTaggedPointerString
est imprimé, je ne sais pas comment le convertir en chaîne pour l’utiliser. Quelqu'un a de bonnes idées?
NSTaggedPointerString
est déjà une NSString
, c'est juste une sous-classe. Vous pouvez l'utiliser n'importe où vous pouvez utiliser une NSString
, sans conversion.
J'ai rencontré des endroits où il ne peut pas être utilisé comme chaîne, comme lors de la création d'un NSDictionary. Dans ces cas, utilisez stringWithString:
:
NSString* <# myNSString #> = [NSString stringWithString:<# myNSTaggegedString #>];
J'ai eu ce même problème plusieurs fois. Il semblerait que l'inférence de type pour NSDictionary n'est pas une science exacte. Ce que je fais est spécifiquement demander si l'objet répond à une méthode particulière. Par exemple, si je suis en train d'analyser du JSON et que je tente d'accéder à une valeur de type 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;
pour Swift 3 ou 4
String(stringInterpolationSegment: taggedPointerString)
Dans mon cas, fils {"count": "123"} j'ai eu une erreur . Résolu:
// 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);
}