2016-01-28 110 views
0

我正在創建一個簡單的測驗應用程序。我已經有一個pList文件,其中存儲了所有的問題,併爲每個問題放入了「類別」鍵。 我的plist結構是這樣的:顯示來自pList的特定「類別」

<plist version="1.0"> 
<dict> 
<key>Questions</key> 
<array> 
    <dict> 
     <key>Answers</key> 
     <array> 
      <string>(Answer Choice 1)</string> 
      <string>(Answer Choice 2)</string> 
      <string>(Answer Choice 3)</string> 
      <string>(Answer Choice 4)</string> 
     </array> 
     <key>Category</key> 
     <string>(Category Here)</string> 
     <key>CorrectAnswer</key> 
     <string>(Correct Answer Here)</string> 
     <key>Question</key> 
     <string>(Question Here)</string> 
    </dict> 
</array> 

我可以成功顯示測驗模式plist文件的內容。

但是,我想給用戶選擇選擇或選擇他們想要測試的CATEGORY/s。考慮到這一點,我打算創建一個「設置」視圖,其中包含CHECKBOXES,其中用戶可以選擇一個或多個他/她喜歡的類別。

我的問題是,我應該使用什麼代碼才能夠顯示「問題數組」,其中有用戶選擇的「類別」? 如何將該代碼連接到設置視圖的複選框?

這裏的理念是:

的用戶呈現一個設置視圖,他們將選擇一個或多個類別:

The "Settings" view with category checkboxes

然後,測驗模式開始時,他們將只有在「類別/ S」中發現的問題提出了他們選擇:

Quiz mode with selected category/s

+0

您的問題有些寬泛,但想着如何存儲數據開始。我會建議使用類別作爲鍵的字典和該類別的一系列問題作爲與鍵相關聯的值。然後,您可以通過從字典中獲取所有關鍵字並通過獲取與相關密鑰 – Paulw11

+0

相關聯的陣列來嘗試某些代碼來獲取相應問題來檢索類別。彈出一些代碼。它卡住然後尋求幫助 – vaibby

+0

它的simple.save你的數據相應plist.e.save每個類別作爲數組與關鍵的你的類別名稱。 –

回答

0

用以下結構創建你的plist。 enter image description here

對於displaying您的類別爲複選框,從plist詞典中提取所有的鍵。

NSArray *categories = [plistDictionary allKeys]; 

要選擇某個類別下的特定問題,請將所選的複選框類別作爲關鍵字從plist字典中檢索特定的數組。

NSarray *questions = [plistDictionary valueForKey:@"YourSelectedCategory"]; 
+0

嗨,你能快速做到這一點嗎?我將不勝感激,謝謝! – mjoe7

+0

多數民衆贊成簡單,只是將其轉換。請參考NSDictionary和NSArray類。 –

0

像下面獲取的plist數據..

我plist文件,你在你的問題給出結構..

假設你選擇CAT1那麼你會得到具有類別數據=「CAT1 」。

enter image description here

var myDict: NSDictionary? 
    if let path = NSBundle.mainBundle().pathForResource("test", ofType: "plist") { 
     myDict = NSDictionary(contentsOfFile: path) 
    } 
    //var categoryArray = NSMutableArray() 
    if let dict = myDict { 
     // Use your dict here 
     let questionArray = (dict.objectForKey("Questions") as! NSArray) 
     let predicate = NSPredicate(format: "(SELF.Category == %@)","cat1") 
     let filterArray = (questionArray.filteredArrayUsingPredicate(predicate) as NSArray) 
    //Here i am filter out data for category "cat1" 
    //It will show all filter data which contain category="cat1"  
     print("\(filterArray)") 

    } 
+0

Plist將是一個dictionary.And NSArray沒有valueForKeyPath方法。 –

+0

我已根據您的要求在Xcode中實施代碼,它將解決您的問題。 – Bhoomi

+0

哇,謝謝@bhoomi! – mjoe7

相關問題