मूंछ टेम्पलेट्स को प्रस्तुत करने के लिए GRMustache.swift पर पास किए गए डेटा पेलोड को इकट्ठा करना, मैं एक ऐसे परिदृश्य में हूं जहां मुझे शब्दकोश में परिभाषित एरे में डेटा जोड़ने की आवश्यकता है।सरणी में शामिल करें [स्ट्रिंग: कोई भी] शब्दकोश संरचना
var data: [String: Any] = [
"key1": "example value 1",
"key2": "example value 2",
"items": [
// I need to append here later
]
]
items
कुंजी युग्म एक संग्रह मैं एक पाश के भीतर बाद में संलग्न करने के लिए की जरूरत है:
मेरे डेटा संरचना के रूप में शुरू होता है।
data["items"]
सरणी के लिए जोड़ने के लिए, मैं की तरह कुछ कोशिश कर रहा हूँ:
for index in 1...3 {
let item: [String: Any] = [
"key": "new value"
]
data["items"].append(item)
}
यह त्रुटियों, +=
प्रकार Any?
की ऑपरेंड के लिए लागू नहीं किया जा सकता के रूप में प्रकार Any?
का मूल्य कोई भी सदस्य append
, और बाइनरी ऑपरेटर है और [String : Any]
।
यह समझ में आता है, क्योंकि मुझे मूल्य जोड़ने के लिए मूल्य डालना होगा; हालांकि, मैं सरणी को म्यूट नहीं कर सकता।
सरणी में कास्ट करना, चाहे खिन्न मजबूर कर त्रुटि देता है:
(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<_>'
लगता है जैसे मेरी डाली गलत है; या, शायद मैं गलत तरीके से इस बारे में जा रहा हूं।
data["items"]
को समय के साथ आसानी से भरने के बारे में कोई सिफारिश?
@JasonSturges मैं जानता हूँ कि जोड़ सकते हैं, मैं तुम सिर्फ दिखाने है मुद्दा था क्या और कहां कर सकते हैं सरणी को सीधे जोड़ दें जो शब्दकोश के अंदर था। –
वास्तव में '[स्ट्रिंग: [[स्ट्रिंग: कोई भी]]] टाइपिंग की स्पष्टता, और लालित्य की सराहना करते हैं। –
ध्यान दें कि आप 'डेटा [" आइटम "] का उपयोग कर सकते हैं? डेटा (" आइटम "] के बजाय संलग्न करें (आइटम) '! ऊपर (आइटम) ऊपर जोड़ें; उत्तरार्द्ध एक रनटाइम दुर्घटना उत्पन्न करेगा यदि आइटम "कुंजी" के लिए कोई मूल्य नहीं होता है (भले ही हम इसे इस उदाहरण में जानते हों), जबकि पूर्व बस एक अप्रयुक्त 'शून्य' वापस कर देगा। यहां तक कि यदि हम मौजूद वस्तुओं की कुंजी को जानते हैं, तो भी मुझे विश्वास है कि हमें सुरक्षित दृष्टिकोण पसंद करना चाहिए, खासकर जब यह बिना किसी अतिरिक्त लागत के आती है। हमेशा शुरुआती एसओ पाठकों के लिए खराब '!' अभ्यास को मजबूत करने का जोखिम जो यह नहीं समझता कि इस विशेष मामले/उदाहरण में, '!' सुरक्षित है, लेकिन अन्यथा, आमतौर पर नहीं है। सुझाव के लिए – dfri