Не можете манипулировать строкой? - PullRequest
0 голосов
/ 15 октября 2011
NSString *string = @"HELLO";

По какой-то причине XCode не будет выполнять автозаполнение таких методов, как удаление символов, добавление и т. Д. Если это так, как я могу, скажем, удалить определенные символы из моей строки? Скажем, я хочу удалить все буквы "L".

Ответы [ 2 ]

5 голосов
/ 15 октября 2011

NSString не отвечает на эти методы. NSMutableString делает, но вы объявили неизменную строковую переменную и присвоили ей строковый литерал. Поскольку Objective-C @"string literal" всегда неизменен (экземпляр NSString, но не NSMutableString), эти сообщения не могут быть отправлены на используемый вами объект.

Если вам нужна изменяемая строка, попробуйте:

NSMutableString *mutableString = [[@"HELLO" mutableCopy] autorelease];
1 голос
/ 15 октября 2011

Это неизменный строковый литерал.

Вот отличный пост, объясняющий это более подробно:

В чем разница между строковой константой и строковым литералом?

Что касается вашего вопроса о том, как бы вы изменили его и удалили Ls:

NSString *hello = @"HELLO";
NSString *subString = [hello stringByReplacingOccurrencesOfString:@"L" withString:@""];
NSLog(@"subString: %@", subString);

выводит "HEO"

Либо так, либо вы можете создать NSMutableString, создав копию изменяемой строки, как упоминал Джонатан. В обоих примерах вы копируете его в не-буквальную строку.

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