web-dev-qa-db-ja.com

NSDictionaryをNSStringに変換します

私はテストのためにNSDictionaryの内容をNSStringに入れようとしていますが、これを達成する方法がわかりません。出来ますか?もしそうなら、どのようにしてそのようなことをするでしょうか?

これを行う理由は、デバイスでデバッガを実行せずにNSDicitonaryの内容を確認する必要があるからです。 iOSのマルチタスクバーから実行中のアプリを削除する必要があるため、辞書に保存している値が後で使用可能かどうかを確認できます。

56
C.Johns

[aDictionary description]を呼び出すか、フォーマット文字列が必要な場所であればどこでも、%@を使用して辞書の代わりに使用できます。

[NSString stringWithFormat:@"my dictionary is %@", aDictionary];

または

NSLog(@"My dictionary is %@", aDictionary);
124
Jay Wardell

上記のソリューションは辞書を文字列に変換するだけですが、その文字列を辞書に戻すことはできません。そのためにはより良い方法です。

文字列に変換

NSError * err;
NSData * jsonData = [NSJSONSerialization  dataWithJSONObject:yourDictionary options:0 error:&err];
NSString * myString = [[NSString alloc] initWithData:jsonData   encoding:NSUTF8StringEncoding];
NSLog(@"%@",myString);

辞書に戻す

NSError * err;
NSData *data =[myString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary * response;
if(data!=nil){
 response = (NSDictionary *)[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&err];
}
72
Danial Hussain

descriptionからNSDictionaryによって継承されたNSObjectメソッドを使用するか、NSDictionaryを好みに合わせてフォーマットするカスタムメソッドを記述できます。

12
dasblinkenlight