带默认值的swift协议

带默认值的swift协议,swift,swift4,protocols,Swift,Swift4,Protocols,我正在通过重写自定义tableview实现来练习swift协议 protocol PreviewModuleViewDataSource { func previewModuleView(_ moduleView: PreviewModuleView, numberOfItemsInSection section: Int) -> Int func previewModuleView(_ moduleView: PreviewModuleView, cellForItemA

我正在通过重写自定义tableview实现来练习swift协议

protocol PreviewModuleViewDataSource {
    func previewModuleView(_ moduleView: PreviewModuleView, numberOfItemsInSection section: Int) -> Int
    func previewModuleView(_ moduleView: PreviewModuleView, cellForItemAt indexPath: IndexPath) -> PreviewModuleViewItem
}
我有第节中项目数量的协议和索引路径中的“项目单元格”

然后我扩展了我的协议,如下所示:

func previewModuleView(_ moduleView: PreviewModuleView, numberOfItemsInSection section: Int) -> Int {
        return dataSource.count
    }

    func previewModuleView(_ moduleView: PreviewModuleView, cellForItemAt indexPath: IndexPath) -> PreviewModuleViewItem {

        let item = PreviewModuleViewItem()
        item.image = UIImage(named: "ItunesArtwork")

        return item

    }
我的问题是如何在我的核心类中获得“dataSource.count”的值,该类将使用这些数据


谢谢

我想您是在问如何在
previewModuleView
对象中使用从
func previewModuleView(uu-moduleView:previewModuleView,numberofitemsinssection:Int)->Int
返回的值

protocol PreviewModuleViewDataSource: class {
    func previewModuleView(_ moduleView: PreviewModuleView, numberOfItemsInSection section: Int) -> Int
    func previewModuleView(_ moduleView: PreviewModuleView, cellForItemAt indexPath: IndexPath) -> PreviewModuleViewItem
}

class PreviewModuleView {
    weak var dataSource: PreviewModuleViewDataSource?

    func useValueExample() {
        if let numberOfItems = dataSource?.previewModuleView(self, numberOfItemsInSection: 0) {
            print("Number of items in section 0 = \(numberOfItems)")
        }
    }
}
例如,在使用表视图时,必须将视图控制器指定为数据源。因此,您需要一个数据源变量来分配委托。当您想要访问某个节中的项数时,您可以在数据源上调用该函数

在本例中,我将协议更改为
协议,并使数据源变量变弱,这是我的建议