将NSDictionary值转换为NSString

时间:2017-08-08 06:00:59

标签: ios objective-c nsstring nsdictionary

我有一个NSDictionary,其中值的类型不同,但需要转换为字符串并放回原始的NSDictionary中。到目前为止,我有以下内容:

for (id key in myDictionary) {
    id value = [myDictionary objectForKey:key];
    value = (NSString *)[NSString stringWithFormat:@"%@", value];
}

然而这不起作用 - 当我打印出每个值的类型之后,它们仍然与以前一样。有人可以建议吗?

3 个答案:

答案 0 :(得分:2)

当您将对象传递给具有%@的格式字符串时,将调用对象- (NSString *)description。如果您没有在子类中重写此方法,则默认情况下将打印类名称和对象内存地址。此外,不需要演员表。

要解决您的问题,您可以在classess中提供description方法的自定义实现,或使用- (NSString *)toString方法创建自己的协议并在需要时实施。

答案 1 :(得分:0)

描述方法的实现,信用@Losiowaty

//quick way to create dictionary
NSDictionary * d = @{@"keyA":@(22),@"keyB":[UIView new],@"keyC":@"valueC"};

//create mutable dictionary for new values
NSMutableDictionary * md = [@{}mutableCopy];

//loop through all keys
for (NSString * key in d.allKeys){

    //set value
    md[key]=[d[key] description];

}

NSLog(@"d is %@", d);
NSLog(@"md is %@", md);

答案 2 :(得分:-1)

你可以试试这个

for (id key in myDictionary) {
   if ([key isKindOfClass:[NSString class]]) {
       NSString * value = [[myDictionary objectForKey:key] stringValue];
   }
}