快速指针?

时间:2015-11-13 18:50:43

标签: swift pointers

我有以下代码。我想创建问题的对象,从而导致一些解决方案。

这是我的问题对象:

class Question {

    var question = String()
    var answers = [String]?()
    var prevQuestion:Question?
    var followingQuestions:[Question]?

    init (question: String, answers: [String]?) {
        self.question = question
        self.answers = answers
    }

}

这是一个应该生成问题对象的函数(没有答案的问题对象是答案):

func initializeObjects () {

    for i in 0...(questions.count - 1) {

        questionObjects.append(Question(question: questions[i], answers: answers[i]))

    }

    // Q1
    questionObjects[1 - 1].prevQuestion = nil
    questionObjects[1 - 1].followingQuestions = [questionObjects[2 - 1], questionObjects[3 - 1]]
    // Q2
    questionObjects[2 - 1].prevQuestion = questionObjects[1 - 1]
    questionObjects[2 - 1].followingQuestions = [questionObjects[4 - 1], questionObjects[6 - 1]]
    // Q3
    questionObjects[3 - 1].prevQuestion = questionObjects[1 - 1]
    questionObjects[3 - 1].followingQuestions = [questionObjects[5 - 1], questionObjects[8 - 1]]
    // Q4
    questionObjects[4 - 1].prevQuestion = questionObjects[2 - 1]
    questionObjects[4 - 1].followingQuestions = [questionObjects[9 - 1]]
    // Q5
    questionObjects[5 - 1].prevQuestion = questionObjects[3 - 1]
    questionObjects[5 - 1].followingQuestions = [questionObjects[8 - 1], questionObjects[11 - 1]]
    // Q6
    questionObjects[6 - 1].prevQuestion = questionObjects[2 - 1]
    questionObjects[6 - 1].followingQuestions = [questionObjects[16 - 1], questionObjects[7 - 1]]
    // Q7
    questionObjects[7 - 1].prevQuestion = questionObjects[6 - 1]
    questionObjects[7 - 1].followingQuestions = [questionObjects[17 - 1], questionObjects[13 - 1]]

    // and so on ... 

} // end of initializeObjects()

但问题是,例如在问题#3中,我想将问题#5作为以下问题之一。但它尚未完全配置。因此,我想在此问题上加上地址,以便在其中填写日期数据。有可能吗?还是有另一种方式?非常感谢你。

1 个答案:

答案 0 :(得分:1)

我认为来自“The Swift Programming Language”iBook的这两个引用回答了你的问题。 (免费提供@iBooks商店)

  

“如果您有使用C,C ++或Objective-C的经验,您可能知道这些语言使用指针来引用内存中的地址。一个Swift常量或变量引用某个引用类型的实例类似于C中的指针,但不是指向内存中地址的直接指针,并且不需要编写星号(*)来表示您正在创建引用。而是将这些引用定义为任何其他常量或变量在斯威夫特。“

  

“结构实例总是按值传递,类实例总是通过引用传递。”

所以我认为您的代码没问题,而且您无需更改当前的解决方案。

此外,我建议您阅读该书中的“收集类型的分配和复制行为”主题。