web-dev-qa-db-fra.com

convertir NSTaggedPointerString en NSString

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?

19
Henry Zhang

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.

32
Catfish_Man

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 #>];
10
Stan James

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;
2
Brandon A

pour Swift 3 ou 4

String(stringInterpolationSegment: taggedPointerString) 
0
Jorge Paiz

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);

 }
0
dip