2015-10-19 22 views
16

Baiduのインターフェースを呼び出してID番号を確認していましたが、JSStringのMのまわりでsex = Mで返されました。 NSTaggedPointerStringとして印刷されている、この性別のプロパティのクラス名を印刷します。文字列に変換する方法は疑問です。誰もが良いアイデアを持っていますか?NSTaggedPointerStringをNSStringに変換する

+0

{ ERRNUM = 0。 retData = { アドレス= "¥U6e56¥U5317¥U7701¥U7701¥U76f4¥U8f96¥U53bf¥U7ea7¥U884c¥U653f¥U533a¥U5212¥U4ed9¥U6843¥U5e02"; birthday = "1989-07-10"; sex = M; }; retMsg =成功; }これは –

答えて

24

NSTaggedPointerStringはすでにNSStringです。これは単なるサブクラスです。変換なしでNSStringを使用できるどこでも使用できます。

+0

を返すJSONです。おかげさまで、間違った引数を迅速に使用したので、Obj-Cと同じように%@を使用する必要がありますが、代わりに%sを使用しました。エラーを修正しました。 –

+0

私の心の中では、変換しないときに警告するより\ n "〜互換性のないポインタ型が~~" – Kernelzero

+1

これはまったく別の問題です。 NSTaggedPointerStringは、オブジェクトの動的型に関するものです。あなたの問題は、ソースコードに書いたタイプに関するものです。 –

0

私の場合、son {"count": "123"}私はエラーが発生しました。 は解決:私はそのようなNSDictionaryのを作成するときのように、それは文字列として使用することができない場所を、

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

} 
9

遭遇してきました。その場合、stringWithString:

NSString* <# myNSString #> = [NSString stringWithString:<# myNSTaggegedString #>]; 
+0

.propertyがうまく動作しないので、NSDictionary * aDict = @ {[myvar valueForKey:@ "item"]と言った方が簡単です。救助にKVO –

2

私はこの同じ問題を複数回持ちました。 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; 
関連する問題