2015-08-19 121 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