2014-07-17 5 views
1

В Swift можно извлечь/удалить элемент в словаре, используя его индекс, а не ключевое значение? В этом примере я пытаюсь создать список «делать», где я могу в конечном итоге получить доступ ко всем задачам, назначенным отдельному лицу. Но я также хотел бы удалить элемент (задачу) по индексу.Swift - получить по индексу в каталоге

В приведенном ниже коде, как удалить вторую задачу «промыть посуду» по индексу, не используя значение ключа. Я надеялся назвать этот func чем-то вроде: taskMgr.removeTaskByIndex (1)

Любое дополнительное объяснение или совет полезно, поскольку я просто изучаю Swift.

import Foundation 

class TaskManager{ 

    var taskDictArray = Dictionary<String, String>() 

    init(){ 
     taskDictArray = [:] 
    } 

    func addTask(task: String, person: String){ 
     taskDictArray[task] = person 
    } 

} 

var taskMgr = TaskManager() 

taskMgr.addTask("take out trash", person: "emma") 
taskMgr.addTask("wash dishes", person: "jack") 
taskMgr.addTask("clean floor", person: "cleo") 

//taskMgr.removeTaskByIndex(1) 
//var a = taskMgr.getTaskByIndex(1) 

ответ

2

Словари не поддерживают порядок объектов, и единственный способ получить значение - использовать его ключ. Вероятно, вам захочется связать любой список задач, для которых у вас есть индекс, с его соответствующим ключом и использовать его, чтобы манипулировать словарем. Это единственный способ. Вероятно, вы планируете реструктурировать свою прикладную логику, если это невозможно.

Вам нужно добавить функцию, такую ​​как

func removeTask(task: String) { 
    taskDictArray[task] = nil 
} 

Так найти способ, чтобы получить реальную строку задач, с которыми вы общаетесь его.

Смежные вопросы