2016-06-28 17 views
6

Mam trudności z konstruowaniem tego słownika. Mój kod wygląda następująco:Swift: Typ kontekstowy "AnyObject" nie może być używany z literałem słownikowym

var array: [String] = [] 
let params: [String: AnyObject] = [ 
    "presentation": [ 
      "array": array, 
      "current_index": 0 
    ] 
] 

Błąd pojawia się na pierwszej linii "presentation": [ z typu kontekstowe „AnyObject” nie może być używany z słownika dosłownym. Próbowałem przepisywanie tablicy, inicjowanie params następnie ustawienie wartości, itp. Itp. I nie mogę zrozumieć tego problemu. Każda pomoc będzie niesamowita!

Z góry dziękuję!

+0

W zależności od tego, co próbujemy zrobić z params, wierzę, można również zrobić: niech params: [ciąg: Wszelkie] byłoby to daje więcej wolność jako Dowolna obejmowałaby zarówno wartość, jak i typy odniesienia. Oczywiście zawsze jest dla mnie bardziej konkretna, jak wskazano w zaakceptowanej odpowiedzi. – ProgrammierTier

Odpowiedz

3

Spróbuj

let params: [String: [String: AnyObject]]

i zamknąć cytaty po kluczu current_index.

+0

Błąd przy cytowaniu był tylko literówką przy przepisywaniu kodu do stackoverflow, ale dziękuję, że zadziałało! – Kiley

6

Spróbuj to w szybkim 3 działa

var array: [String] = [] 
let params: [String: AnyObject] = [ 
    "presentation": [ 
      "array": array, 
      "current_index": 0 
    ] as AnyObject 
] 
+3

Proszę podać kilka wyjaśnień do kodu, co robi, to również pomoże przyszłym użytkownikom. – kayess

+2

Składnia jest taka, jak umieszczona powyżej w swift 3 - nazwa zmiennej będzie miała typ danych String - z Anyobject, a wartość var ​​będzie również miała alias - jako AnyObject na końcu –