附加到 JSON 字典
Posted
技术标签:
【中文标题】附加到 JSON 字典【英文标题】:Appending to a dictionary of JSON 【发布时间】:2015-08-19 11:46:30 【问题描述】:我希望在将我的项目从 Swift 1.2 转换为 Swift 2.0 时,有人能够帮助我找出我的代码到底做错了什么。
我正在尝试下载和解析 JSON 数据(使用 SwiftJSON 的更新分支),但继续收到错误 Cannot invoke initializer for type 'Minion' with an argument list of type '(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")
我认为我附加了一些错误,但我似乎无法解决这个问题。任何帮助将不胜感激!
【问题讨论】:
【参考方案1】:您名为minionJSON
的SwiftyJSON 对象实际上是一个字典,因此您必须在每次迭代中使用键的值而不是整个对象。在我们的示例中,我们不需要密钥,因此我将其替换为 _
占位符。
for (_ , minionDictionary) in minionJSON
minions.append(Minion(minionDetails: minionDictionary))
【讨论】:
啊,明白了!非常感谢!效果很好!以上是关于附加到 JSON 字典的主要内容,如果未能解决你的问题,请参考以下文章