gpt4 book ai didi

ios - Swift协议(protocol)方法使用

转载 作者:搜寻专家 更新时间:2023-11-01 06:49:25 24 4
gpt4 key购买 nike

所以我开始学习 Swift,因为它看起来比 ObjC 好得多。但是我一定很累(现在是凌晨 2 点 37 分),因为我看不出为什么 Xcode 尖叫我正在尝试调用未定义成员的问题。请看下面的代码:

PeopleStackViewDataSource.swift

import Foundation
import UIKit

protocol PeopleStackViewDataSource {

func stackViewNumberOfItems(stackView: PeopleStackView) -> Int
func stackViewGetView(indexPath: NSIndexPath) -> UIView
}

PeopleStackView.swift

import Foundation
import UIKit

class PeopleStackView: UIView {

var datasource: PeopleStackViewDataSource? {
didSet {
self.redraw()
}
}

var scaleDownBy: Double = 0.1

init(frame: CGRect) {
super.init(frame: frame)

}

init(frame: CGRect, datasource: PeopleStackViewDataSource) {
super.init(frame: frame);
self.datasource = datasource;
}

func numberOfItems() -> Int {
return self.datasource ? self.datasource.stackViewNumberOfItems(self) : 0
}

func redraw() {

}


}

问题是这一行 return self.datasource ? self.datasource.stackViewNumberOfItems(self) : 0 其中 Xcode 表示 stackViewNumberOfItems(self)

PeopleStackViewDataSource?' does not have a member named 'stackViewNumberOfItems

那么,问题出在哪里呢?

最佳答案

问题是

PeopleStackViewDataSource?' does not have a member named 'stackViewNumberOfItems

但是 PeopleStackViewDataSource 有(注意 ?)

您需要解包可选的数据源

func numberOfItems() -> Int {
if let ds = self.datasource {
return ds.stackViewNumberOfItems(self)
} else { return 0 }
}

关于ios - Swift协议(protocol)方法使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24049884/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com