\ n在NSSting *和.plist中

时间:2010-08-09 03:52:07

标签: iphone encoding

代码:

NSString *strDirect = @"Dummy\nMessage";
NSString *strBundle = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"MessageDummy"];
NSLog(@"Direct: %@", strDirect);
NSLog(@"Bundle: %@", strBundle);

其中MessageDummy是.plist文件中的字符串类型值Dummy\nMessage。即:

  <key>MessageDummy</key>
  <string>Dummy\nMessage</string>

输出:

2010-08-09 11:49:18.641 Plan[15558:207] Direct: Dummy
Message
2010-08-09 11:49:18.642 Plan[15558:207] Bundle: Dummy\nMessage

\nNSString *中受到尊重,但在从objectForKey返回时却没有。如何使objectForKey的返回值与NSString *的行为相同?

2 个答案:

答案 0 :(得分:2)

问题在于,当您尝试检索“\ n”时,“\ n”被视为“\\ n”(\用\\转义\)。解决这个问题的方法是,而不是使用

<key>MessageDummy</key>
<string>Dummy\nMessage</string>

使用:

<key>MessageDummy</key>
  <string>Dummy
          Message</string>

希望这有帮助。

答案 1 :(得分:2)

除了Madhup的答案之外,它可能值得指出“\ n”是一个C编译器构造,一种用于传达在源代码中定义的文字字符串中包含换行符的愿望的机制。

Plists以XML格式存储,具有自己的数据格式,转义规则等。

两者之间没有任何关系,你不应该指望两者之间有类似的行为。