Składanie ładunku danych przekazywanego do GRMustache.swift w celu renderowania szablonów wąsów, znajduję się w scenariuszu, w którym muszę dołączyć dane do tablicy zdefiniowanej wcześniej w słowniku.Dołącz do tablicy w [Ciąg: Dowolny] struktura słownika
Moja struktura danych zaczyna się jako:
var data: [String: Any] = [
"key1": "example value 1",
"key2": "example value 2",
"items": [
// I need to append here later
]
]
items
para kluczy jest zbiorem muszę dołączyć później w pętli.
Aby dodać do tablicy data["items"]
, próbuję coś takiego:
for index in 1...3 {
let item: [String: Any] = [
"key": "new value"
]
data["items"].append(item)
}
tej błędów, jako wartość typu Any?
ma człon append
i operator binarny +=
nie mogą być stosowane do argumentów typu Any?
i [String : Any]
.
Ma to sens, ponieważ potrzebuję rzucić wartość, aby dołączyć; jednak nie mogę zmutować tablicy.
Casting do tablicy, czy zmuszanie spuszczonymi daje błąd:
(data["items"] as! Array).append(item)
'Any?' is not convertible to 'Array<_>'; did you mean to use 'as!' to force downcast?
Cannot use mutating member on immutable value of type 'Array<_>'
Wygląda jak moja obsada jest źle; lub, być może, podchodzę do tego w niewłaściwy sposób.
Czy istnieje jakieś zalecenie dotyczące wypełniania w miarę upływu czasu data["items"]
?
@JasonSturges wiem, mam tylko pokazać, co było problemem i gdzie można bezpośrednio dołącz tablicę, która była w słowniku. –
Naprawdę doceniam klarowność i elegancję napisu "[String: [[String: Any]]]. –
Zwróć uwagę, że możesz użyć 'data [" items "]? Append (item)' zamiast 'data [" items "]!. Append (item)' above; ten drugi spowoduje awarię środowiska wykonawczego, jeśli nie będzie żadnej wartości dla '' items "' klucza (nawet jeśli wiemy, że jest w tym przykładzie), podczas gdy ten pierwszy po prostu zwróci niewykorzystany 'nil'. Nawet jeśli wiemy, że klucz do "elementów" istnieje, uważam, że powinniśmy preferować bezpieczne podejście, zwłaszcza gdy nie wiąże się to z dodatkowymi kosztami. Zawsze ryzyko wzmocnienia złego '' 'praktyki dla początkujących czytelników SO, którzy nie zdają sobie sprawy, że w tym konkretnym przypadku/przykładu,'! 'Jest bezpieczne, ale poza tym, na ogół nie jest. – dfri