加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在Swift中创建通用协议?

发布时间:2020-12-14 06:11:08 所属栏目:百科 来源:网络整理
导读:我想创建一个方法的协议,它接受通用输入并返回一个通用值。 这是我试过迄今为止,但它会产生语法错误。 Use of undeclared identifier T. 我究竟做错了什么? protocol ApiMapperProtocol { func MapFromSource(T) - U}class UserMapper: NSObject,ApiMappe
我想创建一个方法的协议,它接受通用输入并返回一个通用值。

这是我试过迄今为止,但它会产生语法错误。

Use of undeclared identifier T.

我究竟做错了什么?

protocol ApiMapperProtocol {
    func MapFromSource(T) -> U
}

class UserMapper: NSObject,ApiMapperProtocol {
    func MapFromSource(data: NSDictionary) -> UserModel {
        var user = UserModel() as UserModel
        var accountsData:NSArray = data["Accounts"] as NSArray     
        return user
    } 
}
对于协议有点不同。看看“关联类型” in Apple’s documentation。

这是你在你的例子中使用它

protocol ApiMapperProtocol {
    associatedtype T
    associatedtype U
    func MapFromSource(T) -> U
}

class UserMapper: NSObject,ApiMapperProtocol {
    typealias T = NSDictionary
    typealias U = UserModel

    func MapFromSource(data:NSDictionary) -> UserModel {
        var user = UserModel()
        var accountsData:NSArray = data["Accounts"] as NSArray
        // For Swift 1.2,you need this line instead
        // var accountsData:NSArray = data["Accounts"] as! NSArray
        return user
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读