Swift:不需要的全局变量声明
Posted
技术标签:
【中文标题】Swift:不需要的全局变量声明【英文标题】:Swift: Global Var Declaration Unwanted 【发布时间】:2015-08-20 05:19:45 【问题描述】: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 question : String
之后,就像var question : String?
对于初学者一样,您将它声明为非可选类型,但它是不允许的 null
它修复了全局 var 错误,但我提到的结构中的这 3 个错误与以前一样出现。我忘了提到 super.viewDidLoad() 有一个“声明仅在文件范围内有效”错误。我知道这意味着什么,但我不知道如何解决。
【参考方案1】:
-
questions.count = questionNum -- 错误:无法分配给属性:'count' 是一个 get-only 属性。原因:很清楚,数组的计数是一个只读属性.你不能给它赋值,你也不需要这样做..
questions.shuffleInPlace -- 错误:“[String]”没有名为 shuffleInPlace 的成员原因:
questions
是 String
的数组。 Swift 数组没有名为 shuffleInPlace
的方法。
返回问题 -- 错误:无法将类型“@lvalue [String”的返回表达式转换为预期的返回类型“[quizController]”。原因:查看readyToAskQuestions
的类型quizController
的数组,您将其定义为可计算属性。它期望 [quizController] 作为返回值,而不是返回 [String],这是错误的。
您似乎对 Swift 很陌生。在这个答案中无法让您清楚所有这些事情。强烈推荐阅读 Apple swift 编程电子书。
【讨论】:
我是,这是我的第一个应用程序。谢谢。以上是关于Swift:不需要的全局变量声明的主要内容,如果未能解决你的问题,请参考以下文章