将NSString添加到NSMutableString

时间:2014-04-07 09:58:43

标签: ios objective-c nsstring

我想添加多个NSStringsNSMutableString来构建字符串列表。

这是我的方法中的代码,它接受NSDictionary并从中获取值 - 然后将其存储在NSString中,然后我将字符串附加到NSMutableString }。第一次运行此方法时,它可以正常工作。但是,当我再次调用该方法时,它将替换NSMutableString中的最后一个字符串。

以下是代码:

NSString *userId = [NSString stringWithFormat:@"%@,", parameters[@"userId"]];
self.alluserIds = [NSMutableString string];


[self.alluserIds appendString:userId];

谁能告诉我我做错了什么?

self.alluserIds被声明为strong

5 个答案:

答案 0 :(得分:3)

此:

self.alluserIds = [NSMutableString string];

正在创建一个新的可变字符串。它应该在您想要使用可变字符串之前完成一次,并且在您想要重新启动之前不要再次执行(因为重新创建可变字符串会破坏您拥有的旧实例)。

答案 1 :(得分:3)

发生这种情况是因为你打电话:

self.alluserIds = [NSMutableString string];

这会创建新字符串并将其分配给self.alluserIds。你应该只调用一次,例如init方法或viewDidLoad。

答案 2 :(得分:1)

您应该使用您正在使用的字符串进行初始化,它应该是您的代码应如下所示的单个初始化。

NSString *userId = [NSString stringWithFormat:@"%@,", parameters[@"userId"]];
if(!self.alluseIds)
    self.alluserIds = [[NSMutableString alloc] initWithString:userId]; //ONLY Initialization
else
    [self.alluserIds appendString:userId];

希望这有帮助

答案 3 :(得分:0)

我不知道您的数据结构,但如果您可能拥有数组中的所有用户ID,则可以将它们与componentsJoinedByString:一起加入:

NSArray *pathArray = [NSArray arrayWithObjects:@"here", @"be", @"dragons", nil];
NSLog(@"%@",[pathArray componentsJoinedByString:@" "]);

答案 4 :(得分:0)

不要使用可变字符串(以及可变集合),除了你真正需要它的情况:http://rypress.com/tutorials/objective-c/data-types/nsstring.html(何时使用可变字符串)当你想要进行大量操作时必须使用它们。不可变集合较慢,因为在附加另一个字符串时会创建新实例。

如何使用NSString

执行此操作
self.alluserIds = [self.alluserIds stringByAppendingString: userId];