当前位置:  开发笔记 > IOS > 正文

在符合该协议的类的声明中指定协议函数的返回类型

如何解决《在符合该协议的类的声明中指定协议函数的返回类型》经验,为你挑选了1个好方法。

我正在使用Swift 3,我想完成一些我不确定的事情.我的后端有不同的内容类型的几个不同的端点,以不同的方式页面响应等.我正在尝试创建一个可以为每种内容类型实现的通用协议.

protocol DynamicContentFetcher {
    func content() -> MutableObservableArray
    func getNext()
    func refresh()
}

其中一个例子是AdSearch.

class AdSearch: DynamicContentFetcher {
    var results = MutableObservableArray([])
    func content() -> MutableObservableArray {
        return results
    }

return不会编译错误Cannot convert return expression of type MutableObservableArray to return type 'MutableObservableArray,这是有道理的.

什么会很好,如果我可以初始化我的类符合DynamicContentFetcher喜欢AdSearchfunc content() -> MutableObservableArray<#Specified Type#>在协议中使用<>中的值.Swift可以实现吗?

MutableObservableArray是一个来自Bond框架的类,一个反应式编程pod.



1> dfri..:

您可以associatedtype在协议中使用a ,并将其用作协议中返回类型中的typeholder content():

struct MutableObservableArray {}

protocol DynamicContentFetcher {
    associatedtype T
    func content() -> MutableObservableArray
    //func getNext()
    //func refresh()
}

struct DynamicAd {}

class AdSearch: DynamicContentFetcher {
    var results = MutableObservableArray()
    func content() -> MutableObservableArray {
        return results
    }
}

什么会很好,如果我可以初始化我的类符合 DynamicContentFetcher喜欢AdSearch并使用该值在 协议中<>func content() -> MutableObservableArray<#Specified Type#>.

您可能希望让AdSeach类是通用的,拿着它用于指定(下面,隐含地推断)的通用typeholder的typealiasassociatedtype中的DynamicContentFetcher协议.

class AdSearch: DynamicContentFetcher {
    // typealias T = U // infered
    var results = MutableObservableArray()
    func content() -> MutableObservableArray {
        return results
    }
}

struct DynamicAd {}
let dynamicAdSearch = AdSearch()

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有