全局objectForKey的类别:安全

时间:2013-01-24 08:22:55

标签: iphone objective-c json nsarray nsdictionary

我们遇到了无数的JSON Feed问题,这些问题在处理(使用AFNetworking JSON Framework)时会导致[__NSCFString objectForKey:]错误导致应用程序崩溃。

我们知道为什么会这样,因为字符串占据了预期NSDictionary的位置。

但我在想,是不是可以制作一个objectForKey函数的类别或子类来快速检查有问题的对象是否完全是一个字典?在ObjectForKey s NSArray {{1}}上有同样的感觉。

这样可以明确降低我们项目中再次发生问题的风险。

1 个答案:

答案 0 :(得分:1)

我认为没有像......那样的功能太难了。

- (NSString*)stringForKey:(id)key;

你可以做点像......

- (NSString*)stringForKey:(id)key
{
    id object = [self objectForKey:key];

    if ([object isKindOfClass:[NSString class]]) {
        return (NSString*)object;
    }

    return nil;
}

您也可以使用类似的其他对象类型。

这样你总能得到你期望的对象类型或者没有。

修改

事实上,在做了一些搜索之后。我认为这个功能已经存在于NSDictionary中。 (由于jrturton的更正。这仅适用于NSUserDefaults。)