繁体   English   中英

如何将NSDictionary转换为NSString?

[英]How can I convert the values is an NSDictionary into an NSString?

我在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

如果我正确地阅读了这个问题,你所需要的只是

[[dict allValues] componentsJoinedByString:@" "]

你需要一个可变的字符串。 改变这个:

NSString *params = [NSString string];

对此:

NSMutableString *params = [NSMutableString string];

然后改变这些:

[params stringByAppendingString:[values objectAtIndex:i]];
[params stringByAppendingString:@" "];

这些:

[params appendString:[values objectAtIndex:i]];
[params appendString:@" "];

stringByAppendingString:返回一个新字符串。 所以你必须做这样的事情:

params = [params stringByAppendingString:[values objectAtIndex:i]];

但是缺点是,每次创建新字符串时,都会浪费内存。您应该改用NSMutableString。 然后你就可以打电话了

[params appendString:[values objectAtIndex:i]];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM