在NSmutableDictionary中未正确插入带有撇号的值

时间:2013-10-28 10:11:30

标签: ios iphone objective-c nsmutabledictionary

我想创建一个带有“name”键和数字的字典,其值为“George's iPhone”和“123456”。

我的代码是:

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";

4 个答案:

答案 0 :(得分:2)

您的代码没有任何问题,输出也没有任何问题。

\U2019是一个可以转换为所需字符的转义序列。

现在,你可能想要',而不是,但那真的既不在这里也不在那里。

答案 1 :(得分:0)

当您对字符串进行初始化时,NSString正在为您选择正确的字符串编码UTF8。所以你的撇号在unicode是\ U2019。你的代码没有错:你在调试器或NSLog中看到的是正确的。

答案 2 :(得分:0)

您使用过:

NSLog(@"%@", dict);

这就是它显示输出的原因。在NSDictionary中,'字符已编码。

您可以查看:

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

它将打印所需的输出。

答案 3 :(得分: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]]);