2015-06-16 71 views
0

我正在創建一個有2種模式的測驗應用程序(讓我們稱它們爲A & B)。每種模式從具有超過250個值的結構陣列中抽取50個隨機的隨機問題。爲了澄清,模式A和模式B都有單獨的問題池,超過250個問題,所以總共有大約500個問題。如何存儲大型數組結構 - 斯威夫特

如何最好地存儲這些結構數組,以便在用戶選擇所需的測試時將其拉入View Controller。

下面是模式問題池的示例。

// Question models 

class QuizQuestion { 

    let question: String! 
    let answer: Bool! 
    let explanation: String! 
    var usersAnswer: Bool? 
    var answerSubmitted: Bool? 

    init(question: String, answer: Bool, explanation: String) { 
     self.question = question 
     self.answer = answer 
     self.explanation = explanation 
    } 
} 

    var questions = [ 

    QuizQuestion(question: "Do I like coffee?", answer: true, explanation: "Because it's awesome!"), 
    QuizQuestion(question: "Is bacon god's gift to mankind?", answer: true, explanation: "Because it's awesome!"), 
    QuizQuestion(question: "Should I take a nap right now?", answer: true, explanation: "You gotta review some code!"), 
    QuizQuestion(question: "Should I take a nap right now?", answer: true, explanation: "You gotta review some code!") 
] 
+0

您是否從數據庫中讀取這些數據?你想如何呈現它們(主/細節視圖或一次一切)? – kostek

+0

所有問題都由我自己進行硬編碼。關於我想如何展示他們 - 我對Swift和一般編程非常陌生。我不太確定我明白你的意思。我只想從250個問題池中提取50個問題,並在上​​面的Question數組中使用這50個問題。 – simlimsd3

+0

你需要澄清。 「商店」是什麼意思?保持內存?保存到磁盤?一個500個問題的數組足夠小,您可以簡單地將其作爲內存數組。除非問題包含圖片或其他多媒體內容,否則您可以以兆字節存儲**整個**內容。 –

回答

1

在磁盤上存儲的問題的兩個方面是: 1)核心數據 2)sqlite的

我建議以下架構來檢索存儲的問題:

1)店鋪核心數據/ sqlite中有250個問題,每個問題與數字1-250相關聯。

2)當您需要隨機選擇50個問題時,生成50個隨機數並檢索與您生成的隨機數相關聯的問題。

這種方法也可以幫助您存儲超過250個問題。

解釋核心數據或sqlite超出了這個答案的範圍。您可以輕鬆地在線查找這些教程。

關於在swift文件中保存: 你可以用swift在問題中聲明一個結構。我認爲這可以解決250個問題,但這種方法的問題在於它會佔用內存。因此,如果您希望在以後添加更多問題,則無法擴展。

+0

感謝您的回答。但是如果數組只存儲在內存中呢? – simlimsd3

+0

也可以將它們放在另一個swift文件中並將它們調用到另一個文件中? – simlimsd3

+0

您可以將它們放在另一個swift文件中並從一個單獨的文件中調用它們。 –