Добавление к словарю JSON

Я надеюсь, что кто-то сможет помочь мне понять, что именно я делаю неправильно в своем коде при преобразовании моего проекта из Swift 1.2 в Swift 2.0.

Я пытаюсь загрузить и проанализировать данные JSON (используя обновленную ветку SwiftJSON), но продолжаю получать сообщение об ошибке Не удается вызвать инициализатор для типа «Миньон» со списком аргументов типа «(minionDetails: Element)».

Кажется, мне удалось успешно преобразовать остальную часть моего кода, но эта строка удерживает меня от создания проекта.

Миньон.стриж

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

Я предполагаю, что добавляю что-то неправильное, но я не могу понять это. Любая помощь будет принята с благодарностью!


person ZbadhabitZ    schedule 19.08.2015    source источник


Ответы (1)


Ваш объект SwiftyJSON с именем minionJSON на самом деле является словарем, поэтому вам нужно использовать значение ключа в каждой итерации, а не весь объект. В нашем примере ключ не нужен, поэтому я заменил его заполнителем _.

for (_ , minionDictionary) in minionJSON {
    minions.append(Minion(minionDetails: minionDictionary))
}
person Eric Aya    schedule 19.08.2015
comment
Ах, понял! Спасибо большое! Работал отлично! - person ZbadhabitZ; 19.08.2015