Benny
Benny

Reputation: 43

How search through a dictionary?

Created some quiz questions set, each question has a quiz category. How do I search through the dictionary to print questions that have the same quiz category selected by user.

Sorry still new to dictionary, still trying to wrap the concept around my head.

import UIKit

var list = [(categoryText: "Numbers", imageText: "Ten", audioText: "Ten"), (categoryText: "Numbers", imageText: "Eight", audioText: "Eight"), (categoryText: "Numbers", imageText: "Five", audioText: "Five"), (categoryText: "Colors", imageText: "Yellow", audioText: "Yellow"), (categoryText: "Colors", imageText: "Blue", audioText: "Blue"), (categoryText: "Colors", imageText: "Red", audioText: "Red") ]

let selectedCategory = "Numbers"

let q = list.filter { (($0 = "Numbers")) }

print(q)

Able to print the quiz base on array index nut would like to be able to select questions that have the same value.

Upvotes: 0

Views: 53

Answers (1)

Ankur Lahiry
Ankur Lahiry

Reputation: 2315

import UIKit
var list = [(categoryText: "Numbers", imageText: "Ten", audioText: "Ten"), (categoryText: "Numbers", imageText: "Eight", audioText: "Eight"), (categoryText: "Numbers", imageText: "Five", audioText: "Five"), (categoryText: "Colors", imageText: "Yellow", audioText: "Yellow"), (categoryText: "Colors", imageText: "Blue", audioText: "Blue"), (categoryText: "Colors", imageText: "Red", audioText: "Red") ]

let selectedCategory = "Numbers"
var selectedCatagoryArray = [Any]()

for index in list {
    if index.categoryText == selectedCategory {
        selectedCatagoryArray.append(index)
    }
}

print(selectedCatagoryArray.description)

if you do a better coding structure , I would suggest

struct Question {
    var categoryText : String?
    var imageText : String?
    var audioText : String?
}

var list = [Question(categoryText: "Numbers", imageText: "Ten", audioText: "Ten"), Question(categoryText: "Numbers", imageText: "Eight", audioText: "Eight"), Question(categoryText: "Numbers", imageText: "Five", audioText: "Five"), Question(categoryText: "Colors", imageText: "Yellow", audioText: "Yellow"), Question(categoryText: "Colors", imageText: "Blue", audioText: "Blue"), Question(categoryText: "Colors", imageText: "Red", audioText: "Red") ]

let selectedCategory = "Numbers"
var selectedCatagoryArray = [Question]()

for question in list {
    if question.categoryText == selectedCategory {
        selectedCatagoryArray.append(question)
    }
}

for element in selectedCatagoryArray {
    print("Question : \(element.categoryText) + with image Text : \(element.imageText) + with audioText : \(element.audioText)" )
}

Upvotes: 1

Related Questions