2016-12-08 8 views
2

Я разрабатываю приложение для IOS, и я стараюсь, чтобы получить каждую букву члена словаря, который я определил, как это:аргумент типа «Строка» не соответствует ожидать типа «Sequence»

var Morse = ["a": "01", "b": "1000", "c": "1010", "d": "100", "e": "0", "f": "0010", "g": "110", "h": "0000", "i": "00", "j": "0111", "k": "101", "l": "0100", "m": "11", "n": "10", "o": "111", "p": "0110", "q": "1101", "r": "010", "s": "000", "t": "1", "u": "001", "v": "0001", "w": "011", "x": "1001", "y": "1011", "z": "1100", "1": "01111", "2": "00111", "3": "00011", "4": "00001", "5": "00000", "6": "10000", "7": "11000", "8": "11100", "9": "11110", "0": "11111", " ": "2"] 

Так, например, если пользователь входит, я хотел бы получить «0», а затем «1». Для этого я использую счетчик:

var counter = 0 
var letter: String = "" 
var strings_letter: String = "" 
letter = Morse[strings_letter]! 
var number = Array(letter)[counter] 

Но это дает мне вопрос:

Argument type 'String' does not conform to expect type 'Sequence' 

Что я делаю неправильно?

+5

В Swift (начиная с версии 2.0, я думаю), 'String' сам по себе не является« Sequence ». Попробуйте с помощью 'Array (letter.characters) [counter]' или 'letter.characters.map {String ($ 0)} [counter]'. – OOPer

ответ

3

Свойство characters экземпляра String содержит последовательность символов, содержащуюся в String. Вы могли бы, для данного ключа (например "a") повторно на карте .characters соответствующего значения ("01") к Односимвольные String экземпляров, чтобы получить String массив:

if let charsForKeyA = Morse["a"]?.characters.map({ String($0) }) { 
    charsForKeyA.forEach { print($0) } 
} /* 0 
    1 */ 
+0

Большое спасибо, я просто попробовал, и это сработало! –

3

Если бы я получил это право, вы хотите чтобы получить массив символов для значения вставленного ключа, основываясь на вашем примере, вывод должен быть как:

"a" => ["0", "1"] 

"b" => ["1", "0", "0", "0"] 

"c" => ["1", "0", "1", "0"] 

и так далее ...

var Morse = ["a": "01", "b": "1000", "c": "1010", "d": "100", "e": "0", "f": "0010", "g": "110", "h": "0000", "i": "00", "j": "0111", "k": "101", "l": "0100", "m": "11", "n": "10", "o": "111", "p": "0110", "q": "1101", "r": "010", "s": "000", "t": "1", "u": "001", "v": "0001", "w": "011", "x": "1001", "y": "1011", "z": "1100", "1": "01111", "2": "00111", "3": "00011", "4": "00001", "5": "00000", "6": "10000", "7": "11000", "8": "11100", "9": "11110", "0": "11111", " ": "2"] 

let insertedKey = "a" 

if let value = Morse[insertedKey] { 
    let array = Array(value.characters) 

    // here is your array! 
    print(array) // ["0", "1"] 
} 
+0

Это тоже сработало, спасибо! –

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

  • Нет связанных вопросов^_^