【问题标题】:How can I convert the values is an NSDictionary into an NSString?如何将值是 NSDictionary 转换为 NSString?
【发布时间】:2012-11-07 18:40:35
【问题描述】:

我在 Objective-c 中有一个方法,它接收 NSDictionary 并将值作为空格分隔的 NSString 返回。这个应用程序是跨平台的,因此我不能使用快速枚举。这是我到目前为止所拥有的,然后是输出(这表明从未创建过字符串):

-(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

【问题讨论】:

    标签: objective-c ios cocoa nsstring nsdictionary


    【解决方案1】:

    如果我没看错,你只需要

    [[dict allValues] componentsJoinedByString:@" "]
    

    【讨论】:

      【解决方案2】:

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

      NSString *params = [NSString string];
      

      到这里:

      NSMutableString *params = [NSMutableString string];
      

      然后更改这些:

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

      对这些:

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

      【讨论】:

      • 完美!这适用于我提供的代码,并显示了我做错了什么以及如何解决它。
      【解决方案3】:

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

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

      但缺点是,每次创建一个新的字符串,都在浪费内存 您应该适当地使用 NSMutableString 代替。然后你就可以打电话了

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

      【讨论】:

        猜你喜欢
        • 2018-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-15
        • 1970-01-01
        • 1970-01-01
        • 2015-04-12
        • 1970-01-01
        相关资源
        最近更新 更多