在swift中解析Instagram API时检查null

时间:2015-06-01 10:40:36

标签: ios null nsdictionary

我试图解析Instagram API,在某些词典中,如caption包含null值。这导致应用程序崩溃。我在stackoverflow上尝试了所有可能的解决方案,但没有任何方法可以帮助我。 问题是如何检查NSDictionary在swift中是否具有空值?

以下是代码:

var captionDict: NSDictionary! = firstObject.objectForKey("caption") as NSDictionary!   // this causing the error when caption: null
        if (captionDict != nil) || (captionDict != NSNull()) {
            var captiontext = captionDict.objectForKey("text") as String!
            if captiontext != nil {
                objInstaFeed.captionText = firstObject.objectForKey("caption")?.objectForKey("text") as String!
            } else {
                objInstaFeed.captionText = ""
            }
        } else {
            objInstaFeed.captionText = ""
        }

2 个答案:

答案 0 :(得分:0)

我相信你所寻找的是:

if var captionDict = firstObject.objectForKey("caption") as? NSDictionary {
  ....
}

as?用于可选择向下转发。当您运行上面的代码时,如果firstObject.objectForKey("caption")返回的对象可以强制转换为NSDictionary,那么将设​​置captionDict变量(编译器会将类型推断为NSDictionary )你会进入if语句。如果不能对NSDictionary进行类型转换(例如,如果它是NSNull的实例),则类型转换将失败,并且不会输入if语句。

还有一个类似的运算符as!,它用于强制向下转换,如果你使用它并且downcast失败,那么它将使你的应用程序崩溃。

答案 1 :(得分:0)

对于NSNull,您可以像这样检查 -

var value: AnyObject! = firstObject.objectForKey("caption")   // this causing the error when caption: null
if (value != nil) && !(value.isEqual(NSNull()))