在NSPropertyListSerialization中处理CFNull对象

Abh*_*nav 4 iphone cocoa-touch objective-c nsdata property-list

在我的应用程序中,我试图序列化服务器响应字典并将其写入文件系统.但是我收到一些回复的错误"属性列表格式无效".原因是服务器响应中的CFNull对象.现在,服务器响应将继续改变,所以我没有明确的方法来删除CFNull对象().以下是我的代码:

NSString *anError = nil;
NSData *aData = [NSPropertyListSerialization dataFromPropertyList:iFile format:NSPropertyListXMLFormat_v1_0 errorDescription:&anError];
Run Code Online (Sandbox Code Playgroud)

解决这个问题的最佳方法是什么?如何一次性从服务器响应中删除所有CFNull对象?

Tap*_*rms 9

我收到Facebook SDK的回复时遇到了这个问题,所以我实现了这个方法:

- (void)cleanDictionary:(NSMutableDictionary *)dictionary {
[dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
    if (obj == [NSNull null]) {
        [dictionary setObject:@"" forKey:key];
    } else if ([obj isKindOfClass:[NSDictionary class]]) {
        [self cleanDictionary:obj];
    }
}];
Run Code Online (Sandbox Code Playgroud)

}

这将走向字典的层次结构并将所有CFNulls转换为空字符串.