के लिए स्विफ्ट 2 और बाद में:
स्विफ्ट 2 कहते मामले पैटर्न के लिए छोरों, जो इसे और भी आसान और सुरक्षित एक में डाली टाइप करने के लिए बनाता है के लिए पाश:
for case let button as AClass in view.subviews {
// do something with button
}
यह स्विफ्ट 1.2 और उससे पहले के मुकाबले आप क्यों बेहतर कर सकते हैं ? क्योंकि केस पैटर्न आपको अपने विशिष्ट प्रकार को संग्रह से बाहर निकालने की अनुमति देता है। यह केवल उस प्रकार से मेल खाता है जिसे आप खोज रहे हैं, इसलिए यदि आपके सरणी में मिश्रण है, तो आप केवल एक विशिष्ट प्रकार पर काम कर सकते हैं।
उदाहरण के लिए:
let array: [Any] = [1, 1.2, "Hello", true, [1, 2, 3], "World!"]
for case let str as String in array {
print(str)
}
आउटपुट:
Hello
World!
के लिए स्विफ्ट 1.2 :
इस स्थिति में, आप कास्टिंग कर रहे हैं view.subviews
और नहीं button
, इसलिए आपको इसे अपने इच्छित प्रकार के सरणी में नीचे करने की आवश्यकता है:
for button in view.subviews as! [AClass] {
// do something with button
}
नोट: यदि अंतर्निहित सरणी प्रकार नहीं है [AClass]
, तो यह क्रैश हो जाएगा। यही कारण है कि है !
पर as!
आपको बता रहा है। यदि आप इस प्रकार के बारे में निश्चित नहीं हैं, तो आप as?
वैकल्पिक बाध्यकारी के साथ एक सशर्त डाली का उपयोग कर सकते हैं if let
:
if let subviews = view.subviews as? [AClass] {
// If we get here, then subviews is of type [AClass]
for button in subviews {
// do something with button
}
}
के लिए स्विफ्ट 1.1 और पूर्ववर्ती संस्करण:
for button in view.subviews as [AClass] {
// do something with button
}
नोट: यदि सबकुछ प्रकार के नहीं हैं तो यह भी दुर्घटनाग्रस्त हो जाएगा AClass
। ऊपर सूचीबद्ध सुरक्षित विधि स्विफ्ट के पुराने संस्करणों के साथ भी काम करती है।
for button in view.subviews as [AClass]