我希望返回符合ArrayObject
协议的任何类型的数组,方法是使用JSON
和init
函数初始化它,所有类型都符合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)
}
}