gpt4 book ai didi

swift - 函数类型的属性初始化错误

转载 作者:搜寻专家 更新时间:2023-10-31 22:22:15 25 4
gpt4 key购买 nike

我正在学习 Swift 并将回调模式应用于一个类作为练习,但遇到了一个我无法解决的问题(构建错误)

override init() {
super.init()
}

convenience init(picker: UIPickerView) {
self.init()
picker.delegate = self
picker.dataSource = self
}

var _selectedCallback: (String) -> Void

func onItemSelected(callback: (String) -> Void) {
self._selectedCallback = callback
}

上面的代码片段在 super.init() 上放置了一个编译器错误,错误消息为

"Property 'self._selectedCallback' not initialized at super.init call"

.

现在,我明白了所有局部变量都必须赋值;但是,我将如何初始化_selectedCallback 的函数类型?我见过的示例如下所示:

var _selectedCallback:  (String) -> Void = test

func test(message: String { }

上面的代码片段返回了一个编译错误

"'String' is not a subtype of "

我觉得我缺少一些简单的东西,我只是找不到它。那或者我做错了,需要找到更好的方法。

最佳答案

你可以给它一个默认值,像这样:

var _selectedCallback: (String) -> Void = { _ in return }

或者,您可以将其设置为默认设置为 nil 的可选项,然后再进行设置:

var _selectedCallback: ((String) -> Void)?

我通常更喜欢第二个选项,因为 Optional 旨在表示可能实际上没有值的可能性,这就是您所处的情况。

关于swift - 函数类型的属性初始化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31975377/

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