我正在创建一个简单的测验应用。我已经有一个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
然后,当测验模式开始时,他们只会在他们选择的“category / s”中找到问题:
答案 0 :(得分:0)
要将displaying
类别作为复选框,请从plist字典中提取所有键。
NSArray *categories = [plistDictionary allKeys];
要选择某个类别下的特定问题,请将所选的复选框类别作为键从plist字典中检索特定数组。
NSarray *questions = [plistDictionary valueForKey:@"YourSelectedCategory"];
答案 1 :(得分:0)
获取如下的plist数据..
我有plist文件作为您在问题中给出的结构..
假设您选择了cat1,那么您将获得具有category =“cat1”的数据。
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)")
}