ViewController.type没有名为' wordList'的成员。迅速

时间:2015-08-05 18:47:04

标签: ios swift

我试图从Swift中的列表中打印一个随机元素,但我一直得到一个" ViewController.type没有一个名为' wordList'的成员。错误。我试图在viewDidLoad()函数中定义变量,但这意味着我无法在其他函数中访问它。

这是代码。

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var wordLabel: UILabel!

var playerTurns = 0

var wordList = ["Watch", "Phone", "Apple", "Technology", "Swift", "Computing", "Software", "Hardware", "Computers", "Processor", "Swift", "Java", "Python", "Programming", "Development", "Microsoft", "DropBox", "Facebook"]


var wordToUse = wordList[Int(arc4random_uniform(18))]
println(wordToUse)

wordLabel.text = String(wordToUse)

由于

2 个答案:

答案 0 :(得分:1)

您不能在其他实例变量的声明初始化(将它们声明为实例字段时初始化)中使用实例变量。我建议您使用init()方法或viewDidLoad()

执行初始化

答案 1 :(得分:0)

这应该有所帮助:

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var wordLabel: UILabel!

var playerTurns = 0

var wordList = ["Watch", "Phone", "Apple", "Technology", "Swift", "Computing", "Software", "Hardware", "Computers", "Processor", "Swift", "Java", "Python", "Programming", "Development", "Microsoft", "DropBox", "Facebook"]


    var wordToUse: String { 
      return wordList[Int(arc4random_uniform(18))]
    }

    func printWordToUse() {
      println(wordToUse)
    }

    override func viewDidLoad() {
      super.viewDidLoad()
      wordLabel.text = wordToUse
    }
}

将wordToUse声明为类型' String'的计算属性。并将println()调用包装在实例方法中。 然后,在viewDidLoad()中,将作业分配到您的商店。

如果需要,可以从按钮创建IBAction,然后使用printWordToUse()方法。

在声明课程时,您基本上只是定义原型。这意味着这是某种蓝图,它告诉每个人这个类的特定实例在创建后能够立即执行的操作。因此,在定义类时,您可以将属性和方法放在声明中。

所以这个调用println(wordToUse) - 应该是`println("(wordToUse)")不是属性方法的声明,因此导致编译器错误"预期声明"。