2012-06-13 78 views
0

我有一个NSString,我想在它的开始处追加{NSMutableString追加失败

NSMutableString *str = [[NSMutableString alloc] initWithString:@"{"]; 
    [str stringByAppendingString:extracted]; 

这将返回str只有{。这是为什么? Objective-C非常令人沮丧,它提供了许多方法来做同样的事情,但是对于需要不同方式的情况。

我试着做[NSMutableString string]并追加{然后extracted它仍然不起作用。为什么这不起作用,我该怎么办?

回答

6

stringByAppendingString返回一个新的字符串,它不会修改旧的字符串。

stringWitharrayWith等开头的所有功能都会创建新对象而不是修改旧对象。

要acheive你想要什么,一个简单的解决方案是:

NSString *str = [NSString stringWithFormat:@"{%@", oldString]; 

或:

NSMutableString *str = [@"{" mutableCopy]; 
[str appendString:blah]; 
+1

(释放或自动释放'str'如果不使用ARC) – bbum

5

您正在调用NSString方法,该方法返回一个新字符串,并且不修改调用它的字符串。您需要致电appendString

[str appendString:extracted]; 
1
// use it like this 

NSString *extracted = @"this is my string"; 
NSString *str = [[NSString alloc] initWithString:@"{"]; 
str = [str stringByAppendingString:extracted]; 

希望这将帮助你