Ошибка добавления строки NSString stringWithUTF8String - PullRequest
1 голос
/ 09 июля 2010

Я пытаюсь добавить массив символов к NSString. Когда я использую код ниже, я получаю эту ошибку:

********* метод инициализации -initWithCharactersNoCopy: length: freeWhenDone: невозможно отправить абстрактному объекту класса NSCFString: создать конкретный экземпляр!

Что это значит и как это можно исправить?

NSString *str =  [[NSString new] initWithString:@"Name: "];
NSString *name = [[NSString new] stringWithUTF8String:user.name];
//NSString *name = [[NSString stringWithUTF8String:seg.segname] copy]; //this also failed
str = [str stringByAppendingString:name];

Ответы [ 3 ]

2 голосов
/ 09 июля 2010

Я думаю, вы ищете что-то вроде этого:

NSString *str = @"Name: ";
NSString *name = [NSString stringWithUTF8String:user.name];
str = [str stringByAppendingString:name];
0 голосов
/ 11 июля 2010

Ошибка, которую вы видите, связана с отправкой -initWithString: в уже инициализированную строку.Это потому, что [NSString new] возвращает строку, которая уже инициализирована.Вы не можете использовать + new, если вам нужен специальный метод init.

  1. Для сообщения -initWithString: вам нужно выделить NSString.Эта строка вызывает ошибку исключения, и после этого ничего не выполняется.Однако, как указал Карл, вам не нужно создавать другой объект для имени, @ "Name:" уже является строкой NSString.

  2. Метод + stringWithUTF8String: является классомпоэтому отправьте его непосредственно в класс NSString.

Возможно, вы захотите просмотреть документацию Apple по target-c по Выделение и инициализация объектов .

0 голосов
/ 10 июля 2010

Вместо добавления строки к другой я бы использовал [NSString stringWithFormat:].

NSString *name = [NSString stringWithUTF8String:user.name];
str = [NSString stringWithFormat: @"Name: %@", name];

Вы даже можете написать код в одной строке.

str = [NSString stringWithFormat: @"Name: %@", [NSString stringWithUTF8String:user.name]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...