2013-10-28 59 views
-1

我想創建一個名爲「George」的iPhone和「123456」的數字字典。帶撇號的值在NSmutableDictionary中沒有正確插入

我的代碼是:

NSString *name = @"George’s iPhone"; 
NSMutableDictionary *dict = [[NSMutableDictionary alloc]init]; 
[dict setValue:@"123456" forKey:@"number"]; 
[dict setValue:name forKey:@"name"]; 

,但我得到了,

name = "George\U2019s iPhone"; 
value = "123456"; 
+3

由於'Nsstring'是一個錯字,我不得不問,你正在使用它,這是否_really_你的代碼。在調試器輸出中輸出'George \ U2019s iPhone'將是正常的。但是,「價值」應該是什麼? – DarkDust

+0

這是調試器的輸出嗎?如果是,那是正確的。如果它在標籤上,這是錯誤的。我是來自調試器的東西。 –

+0

這個字符串包含一個UNICOD字符,你的文本源是什麼? – Manu

回答

2

您的代碼沒有問題,輸出也沒有任何問題。

\U2019是一個轉義序列,可以找到所需的字符。

現在,您可能想要',而不是,但這實際上既不在這裏也不在那裏。

0

當你做你的字符串初始化,NSString是撿正確的字符串編碼爲你這可能是UTF8。所以你的撇號是\ u2019 unicode。你的代碼沒有錯:你在調試器或NSLog中看到的東西在這裏是正確的。

0

您使用:

NSLog(@"%@", dict); 

這就是爲什麼它顯示等的輸出。在NSDictionary中,'字符被編碼。

您可以檢查有:

NSLog(@"%@", [dict valueForKey:@"name"]); 

這將打印所需的輸出。

0

嘗試這樣的: -

NSDictionary *yourDict=[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"George’s iPhone",@"123456",nil] forKeys:[NSArray arrayWithObjects:@"name",@"number",nil]]; 
NSLog(@"%@",[[yourDict valueForKey:@"name"]stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]); 
NSLog(@"%@",[[yourDict valueForKey:@"number"]stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]); 
+0

這裏使用stringByTrimmingCharactersInSet這將刪除空格 –