В настоящее время я извлекаю данные через API поиска в Twitter.Как правильно проанализировать данные JSON, если некоторые данные NSNull
Как только я получаю данные, я пытаюсь разобрать и сохранить данные в свой класс TweetDetails (который должен содержать имя автора, URL-адрес их профиля pic, текст твита, расположение твита , идентификатор твита и идентификатор пользователя).
В некоторых случаях у твитов нет местоположения (я думаю, что ему нужно что-то делать, если они перепутаны) и определенный словарь (здесь есть твитыDict ["place"]), которые в противном случае сохраняли бы эту информацию , вместо этого возвращает NSNull.
В тех случаях, я получаю эту ошибку
не может бросить значение типа 'NSNull' (0x1093a1600) к 'NSDictionary' (0x1093a0fe8).
Вот мой код, как я пытаюсь разобрать данные и сохранить его на объекты в моем TweetDetails классе
client.sendTwitterRequest(request) { (response, data, connectionError) -> Void in
if connectionError != nil {
print("Error: \(connectionError)")
}
do {
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: [])
if let tweets = json["statuses"] as? [NSDictionary] {
for tweetsDict in tweets {
let text = tweetsDict["text"] as! String
let tweetID = tweetsDict["id_str"] as! String
let place = tweetsDict["place"] as! NSDictionary
// this line ^^ is where the error occurs
let city = place.valueForKey("full_name")
let user = tweetsDict["user"] as! NSDictionary
let userID = user.valueForKey("id_str")
let screenName = user.valueForKey("screen_name")!
let avatarImage = user.valueForKey("profile_image_url_https")!
let tweet = TweetDetails(authors: screenName as! String, profileImages: avatarImage as! String, tweetTexts: text, tweetLocations: city as! String , tweetIDs: tweetID , userIDs: userID as! String)
self.allTweets.append(tweet)
self.tweetTableView.reloadData()
}
}
} catch let jsonError as NSError {
print("json error: \(jsonError.localizedDescription)")
}
}
Я попытался создать несколько «если давайте заявления для предоставления альтернативы эти случаи, но ничего не сработало.
Может ли кто-нибудь помочь мне создать пользовательскую альтернативу, когда некоторые данные JSON возвращаются как NSNull. (Даже что-то так же просто, как превратить переменную «город» в строку «Неизвестное местоположение» в тех случаях, когда данные возвращаются NSNull).
Заранее благодарим за участие и прошу сообщить, если есть что-то еще, что я могу добавить, чтобы предоставить более ясность в этом вопросе.
Короче говоря, никогда не используйте принудительное литье 'as!', Если вы не знаете, что значение никогда не может быть «nil». Кроме того, если есть ошибка соединения, этот код сработает (потому что 'data' может быть' nil', и вы приступаете к принудительной разворачиванию его). Возможно, вставьте предложение 'return' в этом разделе, где вы печатаете сообщение об ошибке (или используйте' guard'), так что если произошла ошибка, вы не будете запускать 'JSONObjectWithData', используя' data! '. – Rob