Zaczynam się uczyć swift
Zaczynam , śledząc iBook- The Swift Programming Language
on Swift dostarczony przez firmę Apple. Książka mówi, że aby stworzyć pusty słownik, należy użyć tego [:]
samego, co przy deklarowaniu tablicy jako []
:
Zadeklarowałem pustą tablicę w następujący sposób:
let emptyArr = [] // or String[]()
Ale po zadeklarowaniu pustego słownika pojawia się błąd składni:
let emptyDict = [:]
Jak zadeklarować pusty słownik?
ios
swift
dictionary
z22
źródło
źródło
array :() dictionary :{}
instrukcjach print konsolilet arr = [] let dict = [:] println("array :\(arr)") println("dictionary :\(dict)")
Odpowiedzi:
Uwaga : jeśli zamierzasz zmieniać zawartość słownika w czasie, zadeklaruj go jako
var
(zmienną). Państwo może oświadczyć pustego słownika postacilet
(stała), ale to nie ma sensu, jeśli masz zamiar zmiany jego zawartości w czasie, ponieważ stała nie może być zmieniona po to został zainicjowany.Stara odpowiedź :
Utworzenie pustego słownika typu
<String, String>
wyglądałoby następująco:źródło
var
jak sugerowałem: developer.apple.com/library/prerelease/ios/documentation/Swift/ ...__NSDictionaryI
. Spróbuj dodać do tego element,emptyDict
a zakończy się niepowodzeniem w czasie kompilacji.Nie możesz użyć,
[:]
chyba że informacje o typie są dostępne.W takim przypadku musisz podać to wyraźnie:
var
oznacza, że jest zmienny, więc możesz dodawać do niego wpisy. I odwrotnie, jeśli zrobisz tolet
a, nie możesz go dalej modyfikować (let
oznacza to stałe).Możesz użyć
[:]
notacji skróconej, jeśli na przykład informacje o typie można wywnioskowaćW ostatnim przykładzie wiadomo, że słownik ma typ
Dictionary<String, String>
w pierwszej linii. Zauważ, że nie trzeba było tego jawnie określać, ale zostało to wywnioskowane.źródło
var dict: [String: String] = [:]
Dokumentacja Swift zaleca następujący sposób inicjowania pustego słownika:
Byłem trochę zdezorientowany, kiedy po raz pierwszy natknąłem się na to pytanie, ponieważ różne odpowiedzi wskazywały na różne sposoby inicjalizacji pustego słownika. Okazuje się, że istnieje wiele sposobów, aby to zrobić, chociaż niektóre są trochę zbędne lub zbyt szczegółowe, biorąc pod uwagę zdolność Swifta do wywnioskowania typu.
Gdy masz pusty słownik, możesz dodać parę klucz-wartość w następujący sposób:
Jeśli chcesz ponownie opróżnić słownik, możesz wykonać następujące czynności:
Typy są nadal,
<String, String>
ponieważ tak zostało zainicjowane.źródło
var emptyDictArray = [[String: String]()]
var emptyDictArray = [Dictionary<String, String>()]
Użyj tego będzie działać.
źródło
var emtpyAry = [String]()
. To ma sens.Możesz to po prostu zadeklarować w ten sposób:
źródło
Musisz nadać słownikowi typ
Jeśli kompilator może wywnioskować typ, możesz użyć krótszej składni
źródło
Szybki:
źródło
Ja też się tym bawię. Wydaje się dziwne, że możesz po prostu zadeklarować pusty słownik, a następnie dodać do niego parę klucz / wartość w następujący sposób:
Możesz jednak utworzyć słownik, który akceptuje różne typy wartości, używając typu „Dowolny” w następujący sposób:
źródło
Musisz wyraźnie określić typ danych lub typ można wywnioskować, gdy deklarujesz cokolwiek w Swift.
Szybki 3
Poniższy przykład deklaruje słownik z kluczem jako
Int
typem i wartością jakoString
typem.Metoda 1: inicjator
Metoda 2: Skrótowa składnia
Metoda 3: Literał słownikowy
źródło
Szybki 4
źródło
Jeśli chcesz utworzyć słownik ogólny z dowolnym typem
źródło
Zwykle używam
źródło
Deklarowanie i inicjowanie słowników w języku Swift
Słownik strun
LUB
Słownik Int
LUB
Słownik AnyObject
LUB
Słownik tablicy ciągów
LUB
Array of Dictionaries of String
LUB
źródło
Możesz zadeklarować to jako zero, wykonując następujące czynności:
Więc fajną rzeczą jest to, że już złożyłeś (zwróć uwagę, że użyłem var i nie pozwól, myśl o tym jako o zmiennym i niezmiennym). Następnie możesz wypełnić go później:
źródło
Możesz użyć następującego kodu:
źródło
var dictList = String: Łańcuch do słownika w swift var arrSectionTitle = Łańcuch do tablicy w swift
źródło
Jest to bardzo przydatne w znalezieniu drogi
var dict: Dictionary = [:]
źródło
^ to dodaje słownik dla wejścia [string: double]
źródło