iOS - 将对象添加到 NSMutableDictionary 导致崩溃

iOS - Adding objects to NSMutableDictionary causing crash

在我正在开发的应用程序中,我正在读取 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++
    }
}

使用此代码我收到以下错误,即使我在分配之前检查值:

fatal error: unexpectedly found nil while unwrapping an Optional value

评论此代码并检查“名称”值我认为问题可能出在这部分代码中if(self.pdata.count > 0) { self.playerList.insertObject(self.pdata, atIndex: i) self.pdata.removeAllObjects() i++ }

如果您使用的是 SwiftyJSON(看起来您就是这样),那么它可以很好地防止出现 nil 值。很有可能

如果您将 pdata 声明为:

var pdata:NSMutableDictionary!

那么问题来了。您不是在创建字典,而是一个可选的。在某些时候,您必须实际创建字典。您可以通过以下方式在同一个地方完成:

var pdata = NSMutableDictionary()

相反。