【发布时间】:2012-08-31 10:49:07
【问题描述】:
这个问题类似于this question,但是这个方法只适用于字典的根级别。
我希望用空字符串替换任何出现的NSNull 值,以便我可以将完整的字典保存到 plist 文件中(如果我将它与 NSNull 一起添加,文件将不会写入)。
然而,我的字典里面有嵌套的字典。像这样:
"dictKeyName" = {
innerStrKeyName = "This is a string in a dictionary";
innerNullKeyName = "<null>";
innerDictKeyName = {
"innerDictStrKeyName" = "This is a string in a Dictionary in another Dictionary";
"innerDictNullKeyName" = "<null>";
};
};
如果我使用:
@interface NSDictionary (JRAdditions)
- (NSDictionary *) dictionaryByReplacingNullsWithStrings;
@end
@implementation NSDictionary (JRAdditions)
- (NSDictionary *) dictionaryByReplacingNullsWithStrings {
const NSMutableDictionary *replaced = [NSMutableDictionary dictionaryWithDictionary:self];
const id nul = [NSNull null];
const NSString *blank = @"";
for(NSString *key in replaced) {
const id object = [self objectForKey:key];
if(object == nul) {
[replaced setObject:blank forKey:key];
}
}
return [NSDictionary dictionaryWithDictionary:replaced];
}
@end
我得到这样的东西:
"dictKeyName" = {
innerStrKeyName = "This is a string in a dictionary";
innerNullKeyName = ""; <-- this value has changed
innerDictKeyName = {
"innerDictStrKeyName" = "This is a string in a Dictionary in another Dictionary";
"innerDictNullKeyName" = "<null>"; <-- this value hasn't changed
};
};
有没有办法从包括嵌套字典在内的所有字典中找到每个 NSNull 值...?
编辑: 数据是从 JSON 提要中提取的,因此我收到的数据是动态的(我不想在每次提要更改时都更新应用程序)。
【问题讨论】:
-
另外你真的应该发布实际代码 "
" -
这是我得到的实际响应。我正在解析 JSON 提要,字典是响应。当我将其注销时,它显示为“
”,并在查找和替换 for 循环中被识别为 [NSNull null]。 -
您拥有的代码是用来操作 NSDictionary 的,因此当您解析 JSON 时调用该方法来删除 NSNulls
-
您有任何示例说明如何执行此操作吗?
-
您还有这个问题吗?是否有任何答案解决了问题?
标签: ios plist nsdictionary replace nsnull