【发布时间】:2015-02-10 05:19:43
【问题描述】:
在我正在开发的应用程序中,我正在读取 JSON 文件。此文件包含玩家列表。每个玩家都有一系列属性。
我创建了一个可变数组和一个可变字典来存储数据。我正在尝试将字典存储到数组索引中。我正在尝试使用以下代码:
var data = JSON(json!)
let players = data["API"]["Data"]
var i = 0
for (index:String, player:JSON) in players {
if let name = player["name"].string {
//THIS IS WHERE THE ERROR HAPPENS
self.pdata.setObject(name, forKey: "name")
}
if let serial = player["serial_number"].string {
self.pdata.setObject(serial, forKey: "name")
}
if let status = player["player_status"].string {
self.pdata.setObject(status, forKey: "status")
}
if let resolution = player["resolution"].string {
self.pdata.setObject(resolution, forKey: "resolution")
}
if let lastConnected = player["last_connected"].string {
self.pdata.setObject(lastConnected, forKey: "last_connected")
}
if let diskFree = player["disk_free_percent"].string {
self.pdata.setObject(diskFree, forKey: "disk_free")
}
if let memTotal = player["mem_total_phys"].string {
self.pdata.setObject(memTotal, forKey: "mem_total")
}
if let memAvail = player["mem_avail_phys"].string {
self.pdata.setObject(memAvail, forKey: "mem_avail")
}
if(self.pdata.count > 0) {
self.playerList.insertObject(self.pdata, atIndex: i)
self.pdata.removeAllObjects()
i++
}
}
使用此代码我收到以下错误,即使我在分配它之前检查了值:
致命错误:在展开可选值时意外发现 nil
【问题讨论】:
-
哪一行导致错误?
-
我注释了错误所在的代码。第 7 行(包括注释)。谢谢。
-
player["name"] 你有这个字段的数据吗?你可以使用 player["name"].stringValue 在这种情况下如果 player["name"] nil 属性返回空字符串
-
API 返回的任何播放器都会有一个名称,因为这是系统中的必填字段。不过,我会给 .stringValue 一个机会。
-
player["name"]具有“字符串”属性的类型是什么?
标签: ios swift nsmutablearray nsmutabledictionary