我在 Objective-c 中有一个方法,它接收NSDictionary
并以空格分隔的NSString
返回值。这个应用程序是跨平台的,因此我不能使用快速枚举。这是我到目前为止,后面是输出(显示从未创建String):
-(NSString *)stringValuesFromDict:(NSDictionary *map)
{
NSArray *values = [map allValues];
NSString *params = [NSString string];
NSLog(@"values length: %d", [values count]);
NSLog(@"values = %@", [values description]);
for (int i = 0; i < [values count]; i++)
{
[params stringByAppendingString:[values objectAtIndex:i]];
[params stringByAppendingString:@" "];
}
NSLog(@"params = %@", params);
return params;
}
NSDictionary
:
{"arg1"="monkey"}
输出:
values length: 1
values = (
monkey
)
params =
我做错了什么?如何将params
设置为monkey
?
答案 0 :(得分:5)
如果我正确地阅读了这个问题,你只需要
[[dict allValues] componentsJoinedByString:@" "]
答案 1 :(得分:2)
你需要一个可变的字符串。改变这个:
NSString *params = [NSString string];
到此:
NSMutableString *params = [NSMutableString string];
然后改变这些:
[params stringByAppendingString:[values objectAtIndex:i]];
[params stringByAppendingString:@" "];
到这些:
[params appendString:[values objectAtIndex:i]];
[params appendString:@" "];
答案 2 :(得分:0)
stringByAppendingString:返回一个新字符串。所以你必须做这样的事情:
params = [params stringByAppendingString:[values objectAtIndex:i]];
但缺点是,每次创建新字符串时都会浪费内存 您应该可以使用NSMutableString代替。然后你可以打电话
[params appendString:[values objectAtIndex:i]];