我试图解析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 = ""
}
答案 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()))