swift第一个简单项目 - 不能调用对象方法

时间:2014-07-24 18:02:36

标签: ios swift

我阅读了一些关于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'

的成员

2 个答案:

答案 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语言程序员)。