我正在尝试将char数组附加到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];
答案 0 :(得分:2)
我认为你正在寻找这样的东西:
NSString *str = @"Name: ";
NSString *name = [NSString stringWithUTF8String:user.name];
str = [str stringByAppendingString:name];
答案 1 :(得分:0)
我不会将字符串附加到另一个字符串,而是使用[NSString stringWithFormat:]
。
NSString *name = [NSString stringWithUTF8String:user.name];
str = [NSString stringWithFormat: @"Name: %@", name];
您甚至可以在一行中编写代码。
str = [NSString stringWithFormat: @"Name: %@", [NSString stringWithUTF8String:user.name]];
答案 2 :(得分:0)
您看到的错误是从发送-initWithString:到已经初始化的字符串。这是因为[NSString new]返回已初始化的字符串。如果需要特殊的init方法,则不能使用+ new。
对于-initWithString:消息,您需要分配NSString。这是导致异常错误的行,之后没有执行任何操作。但是,正如Carl指出的那样,你不需要为名称创建另一个对象,@“Name:”已经是一个NSString。
+ stringWithUTF8String:方法是一个类方法,所以直接将它发送到NSString类。
您可能希望在Allocating and Initializing Objects上查看Apple的objective-c文档。