2015-08-19 95 views
0

我希望有人能够帮助我在我的项目从Swift 1.2转换到Swift 2.0时识别我在代码中究竟做了什么错误。我试图下载并解析JSON数据(使用SwiftJSON的更新分支),但继续收到错误无法使用类型'(minionDetails:Element)'的参数列表调用类型为'Minion'的初始化程序'追加到JSON字典

看来我能够成功地转换我的代码的其余部分,但是这条线阻止了我构建项目。

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") 
} 
} 

我以为我追加一些错误,但我似乎无法环绕此我的头。非常感激任何的帮助!

回答

0

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

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

啊,明白了!非常感谢!工作很棒! – ZbadhabitZ