防崩溃的NSDictionary

Dav*_*ave 2 iphone nsdictionary

我正在寻找创建一个"防崩溃"的NSDictionary,因为我使用的是一个将服务器响应转换为NSDictionary的JSON序列化程序.结果,有时字典的键不存在.目前,这会使应用程序崩溃,但我宁愿返回一个空的NSString,所以我可以在界面中显示它.

一个解决方案可能是我每次访问字典时检查密钥,例如

if([returnedDictionary objectForKey:@"key"]){

   // Display [returnedDictionary objectForKey:@"key"];
}else{

   // Display @"";
}
Run Code Online (Sandbox Code Playgroud)

然而,这很快就会产生臃肿,难以阅读的代码.

我曾考虑过创建一个自定义的NSDictionary对象,例如:

@interface NSSafeDictionary : NSDictionary .....
Run Code Online (Sandbox Code Playgroud)

用上面的语句覆盖objectForKey.

这是一种满意的方法吗?

谢谢

kub*_*ubi 8

您是否总是想要从字典中获取字符串或将其他对象存储在其中?如果它只是字符串,我认为最简单的方法是在NSDictionary上构建一个类别.

@interface NSDictionary ( EmptyStrings )
- (NSString *)stringForKey:(id)aKey;
@end

@implementation NSDictionary ( EmptyStrings )

- (NSString *)stringForKey:(id)aKey {
    id object = [self objectForKey:aKey];
    if (object == nil ) {
        return @"";
    }
    if ([object isKindOfClass:[NSString class]) {
        return object;
    } else {
        return nil;
    }
}

@end
Run Code Online (Sandbox Code Playgroud)