if / switch语句,用于创建类实例或创建一个空变量

时间:2019-11-12 10:43:54

标签: swift class if-statement variables switch-statement

我相信这很容易做到,但是我对此并不了解,我仍然是个笨蛋(我搜索了几天,仍然找不到答案或类似的问题,最后我决定问)

我有一个名为(基本上是数据库)的类:QuestionBank001,QuestionBank002等。

因此,当我选择一个问题库并转到另一个ViewController时,我希望能够创建一个特定的实例。 但是我必须在UIViewController下创建此变量,因为有一些功能需要它:

class test1: UIViewController {

    var questions = QuestionBank001()

所以我的问题是,我不知道如何正确添加if / switch语句(或get / set?)。或如何启动它。 如果我可以创建一个空变量(不带类型),则可以使用viewDidLoad()部分,并在其中创建switch语句,但是我不知道该怎么做。

2 个答案:

答案 0 :(得分:0)

您可以在 switch 块中使用 is 。请参阅Swift编程语言中的“对Any和AnyObject进行类型转换”(尽管当然不限于Any)。他们有一个广泛的例子:

for thing in things {
    switch thing {
    case 0 as Int:
        println("zero as an Int")
    case 0 as Double:
        println("zero as a Double")
    case let someInt as Int:
        println("an integer value of \(someInt)")
    case let someDouble as Double where someDouble > 0:
        println("a positive double value of \(someDouble)")
// here it comes:
    case is Double:
        println("some other double value that I don't want to print")
    case let someString as String:
        println("a string value of \"\(someString)\"")
    case let (x, y) as (Double, Double):
        println("an (x, y) point at \(x), \(y)")
    case let movie as Movie:
        println("a movie called '\(movie.name)', dir. \(movie.director)")
    default:
        println("something else")
    }
}

答案 1 :(得分:0)

您应该具有从中继承所有问题库的基本类型或协议。如果问题库类似于问题数组,那么您的情况最简单,只需将数组设置为空即可: var questions = QuestionBank001() 否则,可能有解决方案:

  1. 将变量设置为惰性,当有人尝试使用问题时,它将从数据库加载第一个问题:
lazy var questions: QuestionBank = {
  //code to load the first question bank here
}()
  1. 使变量为可选。现在,您需要在函数开始时在其需要保护的地方解开包装。如果您需要能够表示和清空或缺少问题库,那么这将帮助您正确处理空状态:
var questions: QuestionBank?
  1. 使变量最初设置为一个空的问题库,该库不显示任何问题且没有答案:
var questions = QuestionBank.makeEmpty()