2014-06-27 5 views
5

में किसी ऑब्जेक्ट के डेटा प्रकार से मिलान करें स्विफ्ट में किसी ऑब्जेक्ट के डेटा प्रकार से कैसे मिलान करें?स्विफ्ट

तरह:

var xyz : Any 
    xyz = 1; 
    switch xyz 
{ 
    case let x where xyz as?AnyObject[]: 
     println("\(x) is AnyObject Type") 
    case let x where xyz as?String[]: 
     println("\(x) is String Type") 
    case let x where xyz as?Int[]: 
     println("\(x) is Int Type") 
    case let x where xyz as?Double[]: 
     println("\(x) is Double Type") 
    case let x where xyz as?Float[]: 
     println("\(x) is Float Type") 
    default:println("None") 
    } 
var xyz : Any को

इस मामले स्विच मामले चलाने डिफ़ॉल्ट मामले

+0

सी [इस सवाल का जवाब] [1] [1]: http://stackoverflow.com/questions/24101450/how-do-you- खोज-आउट-द-टाइप-ऑफ-ऑब्जेक्ट-इन-स्विफ्ट – kwcto

+1

हां, यह 'डिफ़ॉल्ट:' चलाता है, क्योंकि 'xzy' किसी भी स्तर पर सरणी नहीं है, इसलिए' डिफ़ॉल्ट: 'शाखा मेल खाती है केवल। – holex

उत्तर

11

परिवर्तन var xyz : AnyObject में और इसे जोड़ने के इस मामले को मिलान कर देंगे

case let x as Int: 

आरईपीएल

से

1> var a : Any = 1 
a: Int = <read memory from 0x7fec8ad8bed0 failed (0 of 8 bytes read)> 
    2> switch a { case let x as Int: println("int"); default: println("default"); } 
int 

से The Swift Programming Language

आप उपयोग कर सकते हैं

और के रूप में करने के लिए एक स्विच बयान के मामलों में ऑपरेटरों एक निरंतर या चर रहा है कि में जाना जाता है के विशिष्ट प्रकार की खोज ही प्रकार किसी भी का होना या AnyObject। नीचे दिया गया उदाहरण चीजों की सरणी में आइटम को फिर से चलाता है और स्विच स्टेटमेंट के साथ प्रत्येक आइटम के प्रकार से पूछताछ करता है। स्विच बयान के मामलों के कई निर्दिष्ट प्रकार की एक निरंतर करने के लिए अपने का मिलान नहीं हुआ मूल्य बाँध अपने मूल्य सक्षम करने के लिए मुद्रित करने के लिए:

for thing in things { 
    switch thing { 
    case 0 as Int: 
     println("zero as an Int") 
    case 0 as Double: 
     println("zero as a Double") 
    case let someInt as Int: 
     println("an integer value of \(someInt)") 
    case let someDouble as Double where someDouble > 0: 
     println("a positive double value of \(someDouble)") 
    case is Double: 
     println("some other double value that I don't want to print") 
    case let someString as String: 
     println("a string value of \"\(someString)\"") 
    case let (x, y) as (Double, Double): 
     println("an (x, y) point at \(x), \(y)") 
    case let movie as Movie: 
     println("a movie called '\(movie.name)', dir. \(movie.director)") 
    default: 
     println("something else") 
    } 
} 

// zero as an Int 
// zero as a Double 
// an integer value of 42 
// a positive double value of 3.14159 
// a string value of "hello" 
// an (x, y) point at 3.0, 5.0 
// a movie called 'Ghostbusters', dir. Ivan Reitman 

नोट:

var xyz : AnyObject = 1 

दे देंगे आप NSNumber क्योंकि Int ऑब्जेक्ट नहीं है इसलिए यह इसे NSNumber में परिवर्तित कर देता है जो ऑब्जेक्ट

है
+0

परिवर्तन var xyz: varOyject var xyz: कोई भी काम नहीं करता @ ब्रायन चेन – Rachit

+0

काम नहीं करते? तुम्हें क्या मिला? –

+0

यह फिर से डिफ़ॉल्ट चलाता है @ ब्रायन चेन – Rachit

2

"मामला है" का एक दिलचस्प उपयोग डालना, यानी, "केस इंट है, स्ट्रिंग है", "," व्यवहार या ऑपरेटर जैसा है।

switch value{ 
case is Int, is String: 
    if value is Int{ 
     print("Integer::\(value)") 
    }else{ 
     print("String::\(value)") 
    } 
default: 
    print("\(value)") 
} 

Similar Post with demo link