Próbuję owijać głowę wokół inicjowania pustych tablic w Swift.Inicjowanie pustych tablic słowników w Swift
Na tablicy ciągów To całkiem proste:
var myStringArray: String[] = []
myStringArray += "a"
myStringArray += "b"
-> ["a", "b"]
i dla liczb całkowitych
var myIntArray: Int[] = []
myIntArray += 1
myIntArray += 2
-> [1, 2]
to działa również w innych typach obiektów, takich jak obiekty NSImage:
let path = "/Library/Application Support/Apple/iChat Icons/Flags/"
let image1 = NSImage(byReferencingFile: path + "Brazil.png")
let image2 = NSImage(byReferencingFile: path + "Chile.png")
var myImageArray: NSImage[] = []
myImageArray += image1
myImageArray += image2
-> [<NSImage 0x7fe371c199f0 ...>, <NSImage 0x7fe371f39ea0 ...>]
Jednak nie mogę opracować składni, aby zainicjować pustą tablicę słowników.
Wiem, że można mieć tablicę słowników ponieważ inicjalizacji z początkową wartością działa:
let myDict1 = ["someKey":"someValue"]
let myDict2 = ["anotherKey":"anotherValue"]
var myDictArray = [myDict1]
myDictArray += myDict2
-> [["someKey": "someValue"], ["anotherKey": "anotherValue"]]
EDIT: Wystąpił błąd w następującym kodzie (mieszanie myNewDictArray i myDictArray) i kiedy skorygować to robi” działa tak jak powiedziałem.
jak ma to:
let myDict1 = ["someKey":"someValue"]
let myDict2 = ["anotherKey":"anotherValue"]
var myNewDictArray: AnyObject = []
myDictArray += myDict1
myDictArray += myDict2
-> [["someKey": "someValue"], ["anotherKey": "anotherValue"]]
to jednak (co można się spodziewać składnia być) nie powiedzie się:
var myNewDictArray: Dictionary[] = []
z błędem Cannot convert the expression's type 'Dictionary[]' to type 'Hashable'
Pytanie brzmi: jaki jest właściwy sposób inicjowania pustej tablicy elementów słownika i dlaczego ta składnia nie działa?
Tak, to działa. Masz pomysł, dlaczego są na to dwa sposoby? – dwkns
Swift używa * interferencji * typu * w czasie kompilacji, więc podczas deklarowania zmiennej można albo określić typ (jak robi to 'dictArray2'), albo natychmiast przypisać mu coś, co kompilator może wymyślić (jak robi' dictArray3'). Pierwsza linia jest bardziej gadatliwa niż to konieczne, ale kompilatorowi to nie przeszkadza. –
Musiałem zmienić na Swift 2 ** var productImageArray: [Dictionary] = [] ** –
swiftBoy