首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Swift泛型类型

Swift泛型类型
EN

Stack Overflow用户
提问于 2018-12-16 12:32:45
回答 1查看 140关注 0票数 3

嗨,我是新手使用swift和编写iOS应用程序。我想知道如何更好地使用泛型来传递我的结果数据。

我有一个代理,它提供来自服务器的人员数据

代码语言:javascript
复制
protocol PersonDataProvider {
    func dataReceived(_ result: PersonResult)
}

通过枚举,结果可以有成功和失败两种状态。

代码语言:javascript
复制
enum PersonResult {
    case success
    case networkFailed
}

下面的类调用服务器api并获取数据,传回

代码语言:javascript
复制
class MyNetworkClass {

    var personDataProvider: PersonDataProvider
    func getDataFromServer() {
        personDataProvider.dataReceived(.success)
    }
}

下面是我订阅提供程序的视图控制器

代码语言:javascript
复制
class MyViewController: PersonDataProvider {

    func dataReceived(_ result: PersonResult) {

        switch result {
        case .success:
            print("success")

        case .networkFailed:
            print("no network")

        }
    }

}

现在,我想用成功块发送额外的信息,它可以像下面的数据模型一样。它可以有任何类型。

代码语言:javascript
复制
class Employer:Person {
    let id
    let salary
}

class Student:Person {
    let id
    let rollNumber
}

我怎样才能做到这一点呢?我可以在协议中定义关联类型吗?如果可以,如何实现?

"PersonDataProvider“的订阅者"MyViewController”如何定义他期望从“成功”块中得到的结果类型?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53799449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档