追加到 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))
}
我希望在将我的项目从 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))
}