斯威夫特:全球变种宣言不受欢迎

时间:2015-08-20 05:19:46

标签: ios swift global-variables initializer

import UIKit

var options = [String]()

var correctAns = Int()

var question : String


class quizController: UIViewController {

    @IBOutlet weak var questionLabel: UILabel!

    @IBOutlet weak var button1: UIButton!

    @IBOutlet weak var button2: UIButton!

    @IBOutlet weak var button3: UIButton!

    @IBOutlet weak var button4: UIButton!


    init() {

        question = "What quiz are you taking?"
        options = ["Medical", "Bollywood", "Math", "Trivia"]
        correctAns = 0



    }

    struct shuffle {

        var readyToAskQuestions : [quizController] {

            var questions = Array(arrayLiteral: question)
            questions.count = questionNum

            questions.shuffleInPlace()
            return questions
        }
        init() {




        }
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }


    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

我在全局var问题中遇到错误:需要初始化的字符串行(全局' var'声明需要初始化表达式或getter / setter说明符)。

但是,如果我尝试初始化它,我会在结构中出现几个错误:

  • questions.count = questionNum - 错误:无法分配属性:' count'是一个只获取财产
  • questions.shuffleInPlace - 错误:' [String]'没有名为shuffleInPlace的成员
  • 返回问题 - 错误:无法转换类型' @lvalue的返回表达式[String'预期的退货类型' [quizController]'

我如何重构我的代码,以便初始化全局var而不会遇到这些错误。

1 个答案:

答案 0 :(得分:1)

  1. questions.count = questionNum - 错误:无法分配属性:' count'是一个只有获得的财产 原因:非常清楚,数组计数是一个只读属性。你不能为它分配一个值,你也不需要这样做..
  2. questions.shuffleInPlace - 错误:' [String]'没有名为shuffleInPlace的成员
    原因: questionsString的数组。 Swift数组没有名为shuffleInPlace的方法。
  3. 返回问题 - 错误:无法转换类型' @lvalue的返回表达式[String'预期的回报类型' [quizController]'。
    原因:查看您将其定义为可计算属性的readyToAskQuestions quizController数组类型。它期望[quizController]作为返回值,而不是返回[String],这是错误的。
  4. 好像你对Swift很新。在这个答案中无法让你清楚所有这些事情。强烈建议阅读Apple swift编程电子书。