के रूप में मान जाओ मैं एक शब्दकोश UIColor
वस्तुओं एक enum मान द्वारा टुकड़ों में बांटा, ColorScheme
युक्त है:स्विफ्ट शब्दकोश: सरणी
var colorsForColorScheme: [ColorScheme : UIColor] = ...
मैं सभी रंग की एक सरणी निकालने में सक्षम होना चाहते हैं (मान) इस शब्दकोश से निहित है। मैंने सोचा कि मैं जब मूल्यों (for value in dictionary.values {...}
) शब्दकोश से अधिक पुनरावृत्ति के रूप में प्रयोग किया जाता है, values
संपत्ति इस्तेमाल कर सकते हैं, लेकिन यह एक त्रुटि देता है: मूल्यों की एक Array
लौटने से
let colors: [UIColor] = colorsForColorSchemes.values
~~~~~~~~~~~~~~~~~~~~~^~~~~~~
'LazyBidrectionalCollection<MapCollectionView<Dictionary<ColorScheme, UIColor>, UIColor>>' is not convertible to 'UIColor'
ऐसा नहीं है कि लगता है बल्कि, values
विधि देता है एक अधिक सार संग्रह प्रकार। क्या Array
प्राप्त करने का कोई तरीका है जिसमें for-in
लूप में उन्हें निकाले बिना शब्दकोश के मूल्य शामिल हैं?
एक्सटेंशन बना सकते हैं आप भी रूप में अच्छी तरह टाइप किए हुए वस्तुओं के साथ एक सरणी के रूप में यह डाल सकता। बहुत अच्छा काम करता है! धन्यवाद रंग = [CustomColorObject] (colorsForColorSchemes.values) – bolnad
यह स्विफ्ट 2.0, शब्दकोश में दिखता है। अब एक LazyBidirectionalCollection के विपरीत एक LazyMapCollection लौटाता है। दुर्भाग्यवश, .aray को LazyMapCollection पर परिभाषित नहीं किया गया है। हालांकि, ऐरे (dictionary.values) तरीका अभी भी ठीक काम करता है क्योंकि सरणी प्रकार जानता है कि कैसे LazyMapCollection से खुद को प्रारंभ करना है। –
ध्यान दें कि मानों का क्रम अप्रत्याशित हो सकता है। उदाहरण के लिए '[0:" छोटा ", 1:" मध्यम ", 2:" बड़ा "]' शायद * नहीं * उत्पन्न होगा ["छोटा", "मध्यम", "बड़ा"] ' –