2012-04-12 163 views
48

我想將NSDictionary的內容放入NSString中進行測試,但不知道如何實現這一點。可能嗎?如果是這樣的話,會怎麼做?將NSDictionary轉換爲NSString

我這樣做的原因,我需要檢查一個NSDicitonary的內容,而無需在我的設備上運行調試器。因爲我不得不從ios的多任務欄中刪除正在運行的應用程序,所以我可以看到我保存到字典中的值是否仍然可用。

+0

類似的問題:http://stackoverflow.com/questions/3424439/view-contents-of-nsmutabledictionary – 2012-04-12 00:57:20

回答

118

您可以撥打[aDictionary說明],或任何你需要的格式字符串,只需使用%@站在了詞典:

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

NSLog(@"My dictionary is %@", aDictionary); 
+0

啊..很酷,是啊我知道如何登錄,但不知道你可以做到這一點,讓它進入nsstring ..很酷, – 2012-04-12 00:57:13

+0

虐待標記你的答案,一旦我被允許太:) – 2012-04-12 00:57:28

+0

如何從JData格式的NSData獲取谷值。 – 2012-08-07 04:14:08

12

您可以使用由NSDictionaryNSObject繼承的description方法,或者編寫一個自定義方法,將NSDictionary格式化爲您的喜好。

+0

描述方法提供了一些額外的信息,除了實際的字典數據。 – Adeel 2016-09-21 08:47:37

51

Above Solutions只會將字典轉換爲字符串,但不能將該字符串轉換回字典。 因爲這是更好的方法。

轉換爲字符串

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]; 
} 
+0

它適用於單個字典。什麼在多字典的情況下?我無法將其轉換回字典。 – 2015-12-15 12:03:45

+1

如果字典有數組作爲值,它不工作 – 2016-05-17 09:01:35

+0

@VineetAshtekar看到這個問題的標題。 問題是將NSDictionary轉換爲NSString。 – 2016-05-19 08:22:36