swift - Downcasting and optional: is this code idiomatic? -


i want make sure getting syntax right in both cases class super or derived class? issues following code?

class {  }  class b : {     var y = 42 }  // #1  func test(x: a?) -> string {     return         (x as? b!)?.y == 42 ? "yes" : "no" }  let a: a? = a() print(test(a))  let b: b? = b() print(test(b)) 

example of code using syntax (datataskurl):

objc:

if ([response iskindofclass:[nshttpurlresponse class]] && [(nshttpurlresponse *)response statuscode] != 200) { 

swift objc-like:

if response.iskindofclass(nshttpurlresponse.self) && (response as! nshttpurlresponse).statuscode != 200 { 

better swift?

if (response as? nshttpurlresponse!)?.statuscode == 200 { 

this swift way (it both safe , nice):

if (response as? nshttpurlresponse)?.statuscode == 200 { 

it uses conditional casting , optional chaining both test class nshttpurlresponse , statuscode 200. note don't need ! after nshttpurlresponse.

if response class, (response as? nshttpurlresponse) return nil, entire optional chain return nil , since nil != 200 test fail.


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -