मैं Xcode 6.4स्विफ्ट सरणी अनुक्रमित
उपयोग कर रहा हूँ मैं UIViews की एक सरणी है और मैं कुंजी "v0", "v1"...
के साथ एक शब्दकोश को परिवर्तित करना चाहते हैं के साथ शब्दकोश में बदलें। इस तरह:
var dict = [String:UIView]()
for (index, view) in enumerate(views) {
dict["v\(index)"] = view
}
dict //=> ["v0": <view0>, "v1": <view1> ...]
यह काम करता है, लेकिन मैं इसे और अधिक कार्यात्मक शैली में करने की कोशिश कर रहा हूं। मुझे लगता है कि यह मुझे परेशान करता है कि मुझे dict
चर बनाना है। मैं enumerate()
उपयोग करने के लिए प्यार होता है और reduce()
तो जैसे:
reduce(enumerate(views), [String:UIView]()) { dict, enumeration in
dict["v\(enumeration.index)"] = enumeration.element // <- error here
return dict
}
यह अच्छे लगता है, लेकिन मैं त्रुटि हो रही है: Cannot assign a value of type 'UIView' to a value of type 'UIView?'
मैं इस अन्य वस्तुओं एक UIView
(यानी: [String] -> [String:String]
) के साथ की कोशिश की है और मैं एक ही मिलता है त्रुटि।
इसे साफ़ करने के लिए कोई सुझाव?
मैं इस यह ठीक करता है विश्वास नहीं कर सकता ! क्या आपको कोई विचार है कि यह क्यों काम करता है? बंदरगाहों पर मैंने देखा है कि अधिकांश दस्तावेज पैरामीटर में 'var' छोड़ा है। – Adam
dict डिफ़ॉल्ट रूप से स्थिर है। यदि आप इसे बदलना चाहते हैं तो आपको इसे चर के रूप में घोषित करने की आवश्यकता है। :) –
आह, यह सही समझ में आता है। बहुत बहुत धन्यवाद, मैं इस पर आज रात बहुत लंबा रहा हूं :) – Adam