我有以下swift3代碼。 JSON可以爲$ 0 [2]值返回一個NSNull值。SWIFT3 JSON NSNull問題
struct Player3 {
let name : String
var score : String
let avatar : String
}
class HistoricLeagueVC: UITableViewController {
var players = [Player3]()
override func viewDidLoad() {
super.viewDidLoad()
let urlString = "https://str8red.com/jsonoverallleaderboard/1025/"
let url = URL(string: urlString)
URLSession.shared.dataTask(with:url!) { (data, response, error) in
if error != nil {
print("there was an error")
} else {
do {
let parsedData = try JSONSerialization.jsonObject(with: data!) as! [[String]]
self.players = parsedData.map { Player3(name: $0[0], score: $0[1], avatar: $0[2]) }
print(self.players.count)
DispatchQueue.main.async {
self.tableView.reloadData()
}
} catch let error as NSError {
print(error)
}
}
}.resume()
}
我試圖將它轉換爲空字符串而沒有成功。我也嘗試設置默認字符串,如"https://str8red.com/static/no_profile_picture.png"
,理想情況下我想這樣做。
在終端狀態Could not cast value of type 'NSNull' (0xed1c78) to 'NSString' (0x57b6b8).
任何幫助的錯誤,將不勝感激。
你爲什麼要投「as! [[String]]'如果你知道可能沒有字符串,但是那裏有NSNulls?我認爲這是代碼崩潰的行 – luk2302
這正是代碼崩潰的地方。最初所有配置文件都有一張圖片,因此它們都不是NSNull,但顯然有些人沒有添加個人資料圖片。所以現在我不知道如何處理NSNull。思考? –
這是做錯的方法,首先如果可能的話應該避免!只要你可以,最好使用警戒語句。然後,你應該有一些json樹,從這個不可能告訴什麼是[0],[1],[2],如果它存在 –