我阅读了一些关于swift的教程,并且已经制作了简单的计数器应用程序,但是我想修改它以使控制器保持清洁并且逻辑移动到外部类:
在ViewController.swift i
中
class ViewController: UIViewController {
var counter: Counter?
override func viewDidLoad() {
super.viewDidLoad()
counter = Counter(label: labelCounter)
counter.renderInit()
}
}
我有Counter类:
class Counter: NSObject {
var label: UILabel?
init(label: UILabel) {
self.label = label
}
func renderInit() {
...
}
}
不幸地在counter.renderInit()
号线上的控制器中我看到错误消息:
'计数器&#39?;没有名为' renderInit'
的成员答案 0 :(得分:1)
将counter.renderInit()
更改为以下其中一项:
counter?.renderInit()
counter!.renderInit()
Counter?
是可选类型。你需要打开它。如果?
为nil,则counter
将忽略该方法,如果!
不存在,{{1}}会强制它解包并抛出错误。
查看this page in Swift's documentation了解有关期权的更多信息。
答案 1 :(得分:0)
好的,我向前迈进了一步,又遇到了调用方法对象的另一个问题。
class Counter: NSObject {
var label: UILabel?
init(label: UILabel) {
self.label = label
}
func renderInit() {
label?.text = String(counter)
}
}
我得到了#34;无法分配到这个表达式的结果。" (对于我希望将编号转换为字符串的行,标记文本。
我阅读了文档和几个教程,但是通过学习新东西,以类似的方式查看示例和它是很好的。不幸的是,斯威夫特是年轻的语言,并没有太多的例子。 (我是Ruby语言程序员)。