我想添加多个NSStrings
和NSMutableString
来构建字符串列表。
这是我的方法中的代码,它接受NSDictionary
并从中获取值 - 然后将其存储在NSString
中,然后我将字符串附加到NSMutableString
}。第一次运行此方法时,它可以正常工作。但是,当我再次调用该方法时,它将替换NSMutableString
中的最后一个字符串。
以下是代码:
NSString *userId = [NSString stringWithFormat:@"%@,", parameters[@"userId"]];
self.alluserIds = [NSMutableString string];
[self.alluserIds appendString:userId];
谁能告诉我我做错了什么?
self.alluserIds被声明为strong
。
答案 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];