使用协议初始化类型数组

时间:2016-09-17 05:50:54

标签: swift swift3 swift-protocols

我希望返回符合ArrayObject协议的任何类型的数组,方法是使用JSONinit函数初始化它,所有类型都符合ArrayObject协议必须有。下面的函数在swift2中完全正常,但由于更新到swift3初始化不再发生,并且在第一次尝试后跳过for循环。我设置了很多断点,但仍然无法理解为什么会发生这种情况

//MARK: Array protocol returns an array of types by initlizaing using the json passed
public protocol ArrayObject {
  init(results: JSON)
}

extension ArrayObject {
  public static func initialize<T:ArrayObject>(json: JSON) -> [T] {
    var array = [T]()
    //For loop bails after the first attempt **
    for i in 0..<json.count{
      array.append(T.init(results: json[i]))
    }
    return array
  }
}


struct Example: ArrayObject{

  var name: String!

  init(results: JSON) {
    name = results["name"].string
  }
}

struct Testing{
 func testing(json: JSON){
    var exampleArray = [Example]()
    exampleArray = Example.initialize(json: json)
  }
}

0 个答案:

没有答案