我试图从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)
由于
答案 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)")不是属性方法的声明,因此导致编译器错误"预期声明"。