2016-01-28 68 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

相关问题