\ n в NSSting * и .plist - PullRequest
       1

\ n в NSSting * и .plist

0 голосов
/ 09 августа 2010

Код:

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

, где MessageDummy - это значение типа строки Dummy\nMessage в файле .plist.т.е.:

  <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

\n учитывается в NSString *, но не при возврате из objectForKey.Как я могу заставить возвращаемое значение objectForKey вести себя так же, как NSString *?

Ответы [ 2 ]

2 голосов
/ 09 августа 2010

В дополнение к ответу Мадхупа, вероятно, стоит указать, что "\ n" является конструкцией C-компилятора, механизмом сообщения о желании включить символ новой строки в литеральную строку, определенную в исходном коде.

Списки хранятся в формате XML, который имеет свой собственный формат данных, экранирующие правила и т. Д.

Между этими двумя понятиями нет никакой связи, и вы не должны ожидать похожего поведения между ними.

2 голосов
/ 09 августа 2010

Проблема заключается в том, что хотя \ n рассматривается как "\\ n", когда вы пытаетесь получить его (\ экранируется с \\).Чтобы обойти это, вместо использования

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

используйте:

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...