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相符合.
这可能吗?如果是这样,语法是什么?
解决方法 Swift 4.2在Swift 4.2中,我能够使用符合这样的协议的元素扩展数组:
public extension Array where Element: customstringconvertible{ public var customDescription: String{ var description = "" for element in self{ description += element.description + "\n" } return description }}总结
以上是内存溢出为你收集整理的ios – 如果Element符合给定的协议,则扩展阵列以符合协议全部内容,希望文章能够帮你解决ios – 如果Element符合给定的协议,则扩展阵列以符合协议所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)