追加到 JSON 的字典

Appending to a dictionary of JSON

我希望在将我的项目从 Swift 1.2 转换为 Swift 2.0 时,有人可以帮助我辨别我的代码到底做错了什么。

我正在尝试下载和解析 JSON 数据(使用 SwiftJSON 的更新分支),但继续收到错误 无法调用初始化程序对于类型 'Minion',参数列表类型为“(minionDetails: Element)”

我似乎能够成功转换我的其余代码,但是这一行阻碍了我构建项目。

Minion.swift

import Foundation
import UIKit

class Minion : NSObject, NSCoding {

var name: String?
var age: String?

class func fetchMinionData() -> [Minion] {

    var myURL = "http://myurl/test.json"

    let dataURL = NSURL(string: myURL)

    var dataError: NSError?

    let data: NSData?
    do {
        data = try NSData(contentsOfURL: dataURL!, options: NSDataReadingOptions.DataReadingMappedIfSafe)
    } catch let error as NSError {
        dataError = error
        data = nil
    }

    let minionJSON = JSON(data!)
    var minions = [Minion]()

    for minionDictionary in minionJSON {
        minions.append(Minion(minionDetails: minionDictionary))
    //THIS LINE GIVES THE ERROR
    }
    return minions
}

init(minionDetails: JSON) {

    name = minionDetails["san"].string
    age = minionDetails["age"].string
}

required init?(coder aDecoder: NSCoder) {
    name = aDecoder.decodeObjectForKey("name") as? String
    age = aDecoder.decodeObjectForKey("age")as? String
}

func encodeWithCoder(aCoder: NSCoder) {
    aCoder.encodeObject(name, forKey: "name")
    aCoder.encodeObject(age, forKey: "age")
}  
}

我想我附加的东西有误,但我似乎无法解决这个问题。任何帮助将不胜感激!

你的名为 minionJSON 的 SwiftyJSON 对象实际上是一个字典,所以你必须在每次迭代中使用键的值而不是整个对象。在我们的示例中,我们不需要密钥,因此我将其替换为 _ 占位符。

for (_ , minionDictionary) in minionJSON {
    minions.append(Minion(minionDetails: minionDictionary))
}