2015-07-28 22 views
6

ile izin veriyorsa Swift'in if let'u kullanarak bir "OR" koşulu kullanmak mümkün mü? (A Dictionary<String, AnyObject> sözlük için) gibiVEYA durum

şey:

if let value = dictionary["test"] as? String or as? Int { 
     println("WIN!") 
} 
+0

Neden Bununla birlikte böyle bir şey yapabilir sadece 'olarak kullanın? AnyObject' – sbarow

cevap

11

'u kullanarak bu bir anlam ifade etmeyecektir, yalnızca bir if ifadeniz olduğunda bir Int veya String olup olmadığını nasıl anlayabilirsiniz?

let dictionary : [String : Any] = ["test" : "hi", "hello" : 4] 


if let value = dictionary["test"] where value is Int || value is String { 
    print(value) 
} 

(Swift 2.0 test edilmiştir) Eğer türlerine bağlı olarak farklı şeyler yapmak gerekiyorsa da bunu yapabilirsiniz

:

if let value = dictionary["test"] { 
    if let value = value as? Int { 
     print("Integer!") 
    } else if let value = value as? String { 
     print("String!") 
    } else { 
     print("Something else") 
    } 
} 
1

Maalesef bunu yapamazsınız bildiğim kadarıyla. İfadeleri iki ayrı kullanmak zorunda kalacaksınız.

if let value = dictionary["test"] as? String { 
    doMethod() 
} else if let value = dictionary["test"] as? Int { 
    doMethod() 
} 

Bu sorunu aşmanın birçok yolu vardır. bu sadece onlardan biri. Lütfen bu özel tipte if ifadesi hakkında daha fazla bilgi için Optional Chaining numaralı Apple belgesine bakın. Bu, Swift 1.2