web-dev-qa-db-ja.com

NSTaggedPointerStringをNSStringに変換します

Baiduのインターフェイスを呼び出してID番号を確認しましたが、Sexの値は、モジュールでMを使用すると、JSONでNSStringの周りに ""なしでsex = Mで返されましたそれを保存し、このsexプロパティのクラス名を印刷するには、NSTaggedPointerStringとして印刷します。使用するためにStringに変換する方法は疑問です。誰もが良いアイデアを持っていますか?

21
Henry Zhang

NSTaggedPointerStringはすでにNSStringであり、単なるサブクラスです。 NSStringを使用できる場所であれば、変換せずに使用できます。

32
Catfish_Man

NSTaggedPointerStringを作成するときなど、NSStringNSDictionaryとして使用できない場所に遭遇しました。そのような場合は、stringWithString:

NSString* <# myNSString #> = [NSString stringWithString:<# myNSTaggegedString #>];
11
Stan James

私はこの同じ問題を複数回経験しました。 NSDictionaryの型推論は正確な科学ではないようです。私がすることは、オブジェクトが特定のメソッドに応答するかどうかを具体的に尋ねることです。たとえば、JSONの解析をループして、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

Swift 3または4の場合

String(stringInterpolationSegment: taggedPointerString) 
0
Jorge Paiz

私の場合、息子{"count": "123"}でエラーが発生しました。解決済み:

// 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