如何在Swift中创建通用协议?
发布时间:2020-12-14 06:11:08 所属栏目:百科 来源:网络整理
导读:我想创建一个方法的协议,它接受通用输入并返回一个通用值。 这是我试过迄今为止,但它会产生语法错误。 Use of undeclared identifier T. 我究竟做错了什么? protocol ApiMapperProtocol { func MapFromSource(T) - U}class UserMapper: NSObject,ApiMappe
我想创建一个方法的协议,它接受通用输入并返回一个通用值。
这是我试过迄今为止,但它会产生语法错误。
我究竟做错了什么? 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 } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |