Próba szybkiego wypełnienia tablicy ciągami z kluczy w słowniku.
var componentArray: [String]
let dict = NSDictionary(contentsOfFile: NSBundle.mainBundle().pathForResource("Components", ofType: "plist")!)
componentArray = dict.allKeys
Zwraca błąd: „AnyObject” nie jest identyczny z łańcuchem
Próbowałem też
componentArray = dict.allKeys as String
ale get: „String” nie jest konwertowany na [String]
Dzięki Swift 3
Dictionary
makeys
właściwość.keys
ma następującą deklarację:Zauważ, że
LazyMapCollection
to może być łatwo przyporządkowuje się do jednejArray
zArray
„sinit(_:)
inicjator.Od
NSDictionary
do[String]
Poniższy
AppDelegate
fragment kodu klasy iOS pokazuje, jak uzyskać tablicę ciągów ([String]
) za pomocąkeys
właściwości zNSDictionary
:Od
[String: Int]
do[String]
W bardziej ogólny sposób poniższy kod Playground pokazuje, jak uzyskać tablicę ciągów (
[String]
) za pomocąkeys
właściwości ze słownika z kluczami ciągowymi i wartościami całkowitymi ([String: Int]
):Od
[Int: String]
do[String]
Poniższy kod Playground pokazuje, jak uzyskać tablicę ciągów (
[String]
) za pomocąkeys
właściwości ze słownika z kluczami całkowitymi i wartościami ciągów ([Int: String]
):źródło
Dictionary<String, String>.Keys
- czy masz jakiś wgląd, kiedy chcielibyśmy użyć tego typu i jak?Tablica z kluczy słownika w Swift
źródło
dict.allKeys
nie jest ciągiem. Jest to[String]
dokładnie tak, jak mówi komunikat o błędzie (zakładając oczywiście, że klucze są ciągami; to jest dokładnie to, co mówisz, kiedy to mówisz).Więc zacznij od wpisania
componentArray
jako[AnyObject]
, ponieważ jest to sposób wpisywania w interfejsie API Cocoa, lub, jeśli rzuciszdict.allKeys
, rzuć to[String]
, ponieważ tak właśnie wpisałeścomponentArray
.źródło
źródło
NSDictionary is Class (pass by reference) Dictionary is Structure (pass by value ) ====== Tablica z NSDictionary ======
NSDictionary ma allKeys, a allValues uzyskuje właściwości typu [Any] .
====== Tablica ze słownika ======
Odwołanie Apple do właściwości kluczy i wartości Słownika .
źródło
co daje [String] https://developer.apple.com/documentation/swift/array/2945003-sorted
źródło
Z oficjalnej dokumentacji Apple Array :
init(_:)
- Tworzy tablicę zawierającą elementy sekwencji.Deklaracja
Parametry
s - Sekwencja elementów do przekształcenia w tablicę.
Dyskusja
źródło
Ta odpowiedź będzie dotyczyła szybkiego słownika z kluczami String. Jak ten poniżej .
Oto rozszerzenie, którego użyję.
I później zdobędę wszystkie klucze.
źródło
Szybki 5
To działa dla mnie.
źródło
Możesz użyć Dictionary.map w następujący sposób:
Wyjaśnienie: Mapa iteruje przez myDictionary i akceptuje każdą parę kluczy i wartości jako 0 USD. Stąd możesz uzyskać 0,0 USD lub 0,0 USD. W końcowym zamknięciu {} możesz przekształcić każdy element i zwrócić ten element. Ponieważ chcesz 0 $ i chcesz go jako ciąg, następnie dokonujesz konwersji za pomocą String (klucz 0,0 $). Zbierasz przekształcone elementy do tablicy ciągów.
źródło
źródło