2015-11-13 82 views
0

我有以下代码。我想创建一些能够产生某种解决方案的问题对象。快速指向?

这是我的问题对象:

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

现在我觉得很蠢。可能没什么。我在操场上测试过它,它给了我奇怪的结果,我无法弄清楚什么是错误的,但现在它似乎正常工作。所以请抱歉,谢谢你的意愿 – Lachtan

回答

1

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

“如果你有C,C++或Objective-C的经验,你可能知道,这些语言使用指针指到的地址在内存中。迅速常数或变量指的是某个引用类型的实例类似于C中的指针,但不是指向内存中地址的直接指针,也不需要您编写星号(*)来指示您正在创建引用。 ,这些参考文献的定义如同夫特任何其他恒定或可变的。”


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


所以我觉得你的代码是确定的,你不需要改变当前的解决方案。

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