我想做类似于这样的事情,但是无法正确使用语法或找到任何可以正确编写它的网络资源:
protocol JSONDecodeable {
static func withJSON(json: NSDictionary) -> Self?
}
protocol JSONCollectionElement: JSONDecodeable {
static var key: String { get }
}
extension Array: JSONDecodeable where Element: JSONCollectionElement {
static func withJSON(json: NSDictionary) -> Array? {
var array: [Element]?
if let elementJSON = json[Element.key] as? [NSDictionary] {
array = [Element]()
for dict in elementJSON {
if let element = Element.withJSON(dict) {
array?.append(element)
}
}
}
return array
}
}
如果这个数组的元素符合JSONCollectionElement
协议,我希望将Array
转换为我的协议JSONDecodeable
。是否有可能? 如果是这样,语法是什么?