\ n не пропускает к следующей строке в NSString - PullRequest
1 голос
/ 28 марта 2011
NSMutableString *a = @"Hi";

NSMutableString *b =[a stringByAppendingString:@"\n\n Hi Again"];

Выше не выдает ошибку, но не ставит "Hi Again" на следующей строке.Почему?

Ответы [ 5 ]

1 голос
/ 27 августа 2012

Я думаю это может вам помочь. Вы бы предпочли использовать '\ r' вместо '\ n'

У меня была похожая проблема, и я обнаружил, что \ n работает в LLDB, но не в GDB

1 голос
/ 28 марта 2011

EDIT2 После публикации я понял, что в заголовке OP есть NSString, но в коде добавлена ​​NSMutableString.Я отправил правку, чтобы изменить NSMutableString на NSString.

Я оставлю это, поскольку оно все еще может быть полезным.


Что ж, я удивлен, что не дает ошибку, потому чтодают NSMutableString NSString.

Вам необходимо прочитать документацию по NSMutableStrings .

, чтобы дать вам представление

//non mutable strings
  NSString *shortGreetingString = @"Hi";
NSString *longGreetingString =  @"Hi Again";
 /*mutable string - is created and given a character capacity The number of characters indicated by capacity is simply a hint to increase the efficiency of data storage. The value does not limit the length of the string
*/

NSMutableString *mutableString= [NSMutableString stringWithCapacity:15];

/*The mutableString, now uses an appendFormat to construct the string
     each %@ in the Parameters for the appendFormat is a place holder for values of NSStrings
     listed in the order you want after the comma. 
    Any other charactars will be included in the construction, in this case the new lines.
*/
[mutableString appendFormat:@"%@\n\n%@",shortGreetingString,longGreetingString];


NSLog (@"mutableString = %@" ,mutableString);

[pool drain];
0 голосов
/ 28 апреля 2011

Если ваша строка идет в UIView (например, UILabel), вам также нужно установить количество строк равным 0

myView.numberOfLines=0;
0 голосов
/ 28 марта 2011

Первый @ "Привет" является константой.Это не может быть видоизменено.Даже если указатель говорит, что это NSMutableString, фактический объект все еще является константой.

Чтобы создать объект NSMutableString, вам нужно сделать, например, [NSMutableString stringWithString:@"Hi"].

Также stringByAppendingString: возвращает неизменную строку NSS, а не изменяемую строку.

Ваш код должен быть (1):

NSMutableString *a = [NSMutableString stringWithString:@"Hi"];

NSString *b = [a stringByAppendingString:@"\n\n Hi Again"];

(2):

NSMutableString *a = [NSMutableString stringWithString:@"Hi"];

[a appendString:@"\n\n Hi Again"];

или (3):

NSString *a = [NSString stringWithFormat:@"%@%@", @"Hi", @"\n\n Hi again"];

(1) даст вам две строки (одна изменяемая, одна неизменная), (2) даст вам одну изменяемую строку и (3)даст вам одну неизменную строку.

0 голосов
/ 28 марта 2011

Попробуйте использовать NSString. Вы можете использовать:

NSString *a = [NSString stringWithFormat:@"%@\n\n%@", @"Hi", @"Hello again"]
...