Я определил перечисление, и я хочу использовать его в качестве ключа для словаря. Когда я пытаюсь получить доступ значения с помощью перечисления в качестве ключа, я получаю сообщение об ошибке о перечисление не является конвертируемым в DictionaryIndex<Constants.PieceValue, Array<String>>
где Constants.PieceValue это перечисление, который выглядит следующим образом:Перегрузка оператора переполнения переполнения
public enum PieceValue: Int {
case Empty = 0,
WKing = 16,
WQueen = 15,
WRook = 14,
WBishop = 13,
WKnight = 12,
WPawn = 11,
BKing = 26,
BQueen = 25,
BRook = 24,
BBishop = 23,
BKnight = 22,
BPawn = 21
}
Я прочитал несколько потоков, но не нашли четких ответов. Я также объявил функцию перегрузки оператора для перечисления вне класса Constants.
func == (left:Constants.PieceValue, right:Constants.PieceValue) -> Bool {
return Int(left) == Int(right)
}
Это линия, которая Xcode жалуется:
self.label1.text = Constants.pieceMapping[self.pieceValue][0]
Constants.pieceMapping имеет следующий вид: Dictionary<PieceValue, Array<String>>
Спасибо за подробное объяснение , Было бы неплохо иметь более описательные сообщения об ошибках. – marosoaie
Ну, ошибка описательная, но это не помогает выяснить, что не так :) Есть много таких случаев - обычно, когда это не имеет смысла, это что-то еще – Antonio