Найти индекс словарной статьи в Swift

Я пытаюсь найти индекс записи в словаре. Мой словарь выглядит следующим образом:

//  Dictionary
var questions: [[String:Any]] = [
    [
        "quesID": 1000,
        "question": "What is the capital of Alabama?",
        "answer": "Montgomery",
    ],
    [
        "quesID": 1001,
        "question": "What is the capital of Alaska?",
        "answer": "Juneau",
    ]
]

Я пытался использовать indexOf, но он не работает. Мой код выглядит следующим образом:

// Find index of dictionary entry with quesID of 1000
let indexOfA = questions.indexOf(1000) // Should return 0

// Find index of dictionary entry with quesID of 1001
let indexOfB = questions.indexOf(1001) // Should return 1

2 ответа

Решение

indexOf Функция принимает закрытие параметра, которое определяет, является ли текущее значение тем, которое вы ищете. Затем возвращает целое число или NSNotFound в зависимости от того, было ли найдено значение или нет.

var questions: [[String:Any]] = [
    [
        "quesID": 1000,
        "question": "What is the capital of Alabama?",
        "answer": "Montgomery",
    ],
    [
        "quesID": 1001,
        "question": "What is the capital of Alaska?",
        "answer": "Juneau",
    ]
]

func indexOfQuestion(id: Int) -> Int {
    return questions.indexOf { (question) -> Bool in
        return question["quesID"] as? Int == id
    } ?? NSNotFound
}

let indexOfA = indexOfQuestion(1000) // 0
let indexOfB = indexOfQuestion(1001) // 1
let nonexistentIndex = indexOfQuestion(1002) // 9223372036854775807

Это может подойти вашему варианту использования.

for (index, element) in questions.enumerated() {
    print("index = \(index)")
    print("element[\"quesID\"] =  \(element["quesID"]!)")
    print("element[\"question\"] =  \(element["question"]!)")
    print("element[\"answer\"] =  \(element["answer"]!)")

    print("\n*************\n")
}

Выход

index = 0
element["quesID"] =  1000
element["question"] =  What is the capital of Alabama?
element["answer"] =  Montgomery

*************

index = 1
element["quesID"] =  1001
element["question"] =  What is the capital of Alaska?
element["answer"] =  Juneau

*************
Другие вопросы по тегам