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

前端之家收集整理的这篇文章主要介绍了如何在Swift中创建通用协议?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想创建一个方法的协议,它接受通用输入并返回一个通用值。

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

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
    }
}

猜你在找的Swift相关文章