2015-08-19 3 views
0

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

Я пытаюсь загрузить и проанализировать данные 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") 
} 
} 

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

ответ

0

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

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

Ах, получилось! Спасибо! Отлично! – ZbadhabitZ

Смежные вопросы