У меня есть перечисление вроде этого:Swift: как закодировать хэш-карту с перечислением в качестве ключа?
enum Direction : String {
case EAST = "east"
case SOUTH = "south"
case WEST = "west"
case NORTH = "north"
}
И у меня есть переменная результата, который является HashMap, используя эти направления перечисления в качестве ключа.
var result = [Direction:[String]]()
Я попытался закодировать этот объект и отправить его на другую сторону через фреймворк. Однако он не работает в кодере.
aCoder.encode(self.result, forKey: "result")
Ошибка говорит: «закодировать (с aCoder: NSCoder) *** Нагрузочного приложения из-за неперехваченное исключение 'NSInvalidArgumentException', причина:«- [_ SwiftValue encodeWithCoder]: непризнанный селектор направлена например 0x17045f230 '
Как кодировать этот HashMap?
Спасибо.
Обратите внимание, что это Swift конвенции использовать 'lowerCamelCase' для случаев перечислений (это не Java!). Я также предполагаю, что вы говорите «Словарь», когда говорите «Хашмап». Также 'var result = [Direction [String]]' недействителен Swift, вы имели в виду 'var result = [Direction: [String]]()' или 'var result: [Direction: [String]]'? – Hamish
Вот дубликат статьи. http://stackoverflow.com/questions/24562357/how-can-i-use-a-swift-enum-as-a-dictionary-key-conforming-to-equatable – mrabins
Да, я имею в виду результат var = [Направление: [String]]() – user6539552