Lắp ráp một tải trọng dữ liệu được chuyển đến GRMustache.swift để hiển thị mẫu ria mép, tôi đang ở trong trường hợp cần thêm dữ liệu vào mảng được xác định trước đó trong từ điển.Nối vào mảng trong cấu trúc từ điển [String: Any]
cấu trúc dữ liệu của tôi bắt đầu giảm giá như:
var data: [String: Any] = [
"key1": "example value 1",
"key2": "example value 2",
"items": [
// I need to append here later
]
]
Các items
cặp khóa là một bộ sưu tập Tôi cần phải thêm sau trong vòng một vòng lặp.
Để thêm vào các mảng data["items"]
, tôi đang cố gắng một cái gì đó như:
for index in 1...3 {
let item: [String: Any] = [
"key": "new value"
]
data["items"].append(item)
}
lỗi này, như giá trị của loại Any?
không có thành viên append
, và điều hành nhị phân +=
không thể được áp dụng cho toán hạng kiểu Any?
và [String : Any]
.
Điều này có ý nghĩa, vì tôi cần truyền giá trị để nối thêm; tuy nhiên, tôi không thể thay đổi mảng.
Đúc đến mảng, cho dù buộc nhìn xuống cung cấp cho các lỗi:
(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<_>'
Có vẻ như dàn diễn viên của tôi là sai; hoặc, có lẽ tôi đang đi về điều này một cách sai lầm.
Bất kỳ đề xuất nào về cách điền data["items"]
lặp đi lặp lại theo thời gian?
@JasonSturges Tôi biết, tôi đã chỉ cho bạn thấy vấn đề là gì và ở đâu bạn có thể trực tiếp nối thêm mảng nằm trong từ điển. –
Thực sự đánh giá cao sự rõ ràng và thanh lịch của kiểu gõ [[String: [[String: Any]]] '. –
Lưu ý rằng bạn có thể sử dụng 'dữ liệu [" mục "] ?. chắp thêm (mục)' thay vì 'dữ liệu [" mục "] !. chắp thêm (mục)' ở trên; sau này sẽ tạo ra một sự cố thời gian chạy nếu không có giá trị nào cho khóa '" items ('ngay cả khi chúng ta biết nó nằm trong ví dụ này), trong khi cái cũ sẽ đơn giản trả về một' nil' chưa được sử dụng. Ngay cả khi chúng ta biết khóa ''mục' 'tồn tại, tôi tin rằng chúng ta nên thích cách tiếp cận an toàn hơn, đặc biệt là khi nó không có thêm chi phí. Luôn luôn là một nguy cơ tăng cường thực hành xấu '!' Cho người đọc SO mới bắt đầu mà không nhận ra rằng trong trường hợp cụ thể/ví dụ này, '!' Là an toàn, nhưng nói cách khác, nói chung là không. – dfri