2015-06-01 2 views
1

Я пытаюсь разобрать Instagram API, в некоторых словарях, таких как подпись, содержит нулевое значение. которые вызывают сбои приложения. Я пробовал все возможные решения, доступные в stackoverflow, но ничего не работало для меня. Вопрос в том, как проверить, имеет ли NSDictionary нулевое значение в swift?Проверка нулевого значения при анализе API Instagram в 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

Я считаю, что то, что вы ищете является:

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

as? используется для необязательно подавленным. Когда вы запускаете код выше, если объект, возвращаемый firstObject.objectForKey("caption"), может быть typecast на NSDictionary, тогда будет установлена ​​переменная captionDict (компилятор выведет тип как NSDictionary), и вы перейдете в оператор if. Если он не может быть typecast для NSDictionary (например, если это экземпляр NSNull), то typecast завершится с ошибкой, и оператор if не будет введен.

Существует также аналогичный оператор as!, который используется для принудительного понижения, если вы используете это, а downcast не работает, это приведет к сбою вашего приложения.

+0

бы вы объяснить это кратко? –

+0

Я уточнил ответ с большим количеством объяснений. –

0

Для NSNull вы можете проверить, как this-

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