我有一个NSDictionary,其中值的类型不同,但需要转换为字符串并放回原始的NSDictionary中。到目前为止,我有以下内容:
for (id key in myDictionary) {
id value = [myDictionary objectForKey:key];
value = (NSString *)[NSString stringWithFormat:@"%@", value];
}
然而这不起作用 - 当我打印出每个值的类型之后,它们仍然与以前一样。有人可以建议吗?
答案 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];
}
}