Tentando preencher uma matriz com seqüências de caracteres das teclas em um dicionário rapidamente.
var componentArray: [String]
let dict = NSDictionary(contentsOfFile: NSBundle.mainBundle().pathForResource("Components", ofType: "plist")!)
componentArray = dict.allKeys
Isso retorna um erro de: 'AnyObject' não idêntico à string
Também tentei
componentArray = dict.allKeys as String
mas get: 'String' não é conversível em [String]
Com Swift 3,
Dictionary
tem umakeys
propriedade.keys
tem a seguinte declaração:Note que
LazyMapCollection
que pode facilmente ser mapeado para umArray
comArray
'sinit(_:)
initializer.De
NSDictionary
até[String]
O seguinte
AppDelegate
snippet de classe do iOS mostra como obter uma matriz de strings ([String]
) usando akeys
propriedade deNSDictionary
:De
[String: Int]
até[String]
De uma maneira mais geral, o seguinte código do Playground mostra como obter uma matriz de strings (
[String]
) usando akeys
propriedade de um dicionário com chaves de string e valores inteiros ([String: Int]
):De
[Int: String]
até[String]
O seguinte código do Playground mostra como obter uma matriz de strings (
[String]
) usando akeys
propriedade de um dicionário com chaves inteiras e valores de string ([Int: String]
):fonte
Dictionary<String, String>.Keys
: você tem alguma ideia de quando queremos usar esse tipo e como?Matriz de teclas de dicionário no Swift
fonte
dict.allKeys
não é uma string. É[String]
exatamente como a mensagem de erro informa (assumindo, é claro, que as chaves são todas cadeias; é exatamente isso que você está afirmando quando diz isso).Portanto, comece digitando
componentArray
como[AnyObject]
, porque é assim que é digitado na API do cacau ou, se você o lançadict.allKeys
, lança para[String]
, porque é assim que você digitoucomponentArray
.fonte
fonte
NSDictionary é Class (passa por referência) Dictionary is Structure (passa por valor ) ====== Matriz de NSDictionary ======
O NSDictionary possui allKeys e allValues obtém propriedades com o tipo [Any] .
====== Matriz do dicionário ======
Referência da Apple para as propriedades de valores e chaves do Dicionário .
fonte
que fornece [String] https://developer.apple.com/documentation/swift/array/2945003-sorted
fonte
A partir da documentação oficial da Apple Array :
init(_:)
- Cria uma matriz contendo os elementos de uma sequência.Declaração
Parâmetros
s - A sequência de elementos para se transformar em uma matriz.
Discussão
fonte
Esta resposta será para o dicionário rápido com teclas String. Como este abaixo .
Aqui está a extensão que vou usar.
E eu vou pegar todas as chaves depois usando isso.
fonte
Swift 5
Isso funciona para mim.
fonte
Você pode usar o dictionary.map assim:
A explicação: Map itera através do myDictionary e aceita cada par de chave e valor como $ 0. A partir daqui, você pode obter $ 0.key ou $ 0.value. Dentro do fechamento à direita {}, você pode transformar cada elemento e retornar esse elemento. Como você deseja $ 0 e deseja como uma string, converte usando String ($ 0.key). Você coleta os elementos transformados em uma matriz de cadeias.
fonte
fonte