我想確保在這兩種情況下我都能得到正確的語法,該類是超類或派生類?以下代碼的任何問題?向下轉換和可選:此代碼是否習慣?
ObjC:
if ([response isKindOfClass:[NSHTTPURLResponse class]] && [(NSHTTPURLResponse *)response statusCode] != 200) {
夫特ObjC狀:
if response.isKindOfClass(NSHTTPURLResponse.self) && (response as! NSHTTPURLResponse).statusCode != 200 {
更好夫特使用此語法(dataTaskURL)碼
class A {
}
class B : A {
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))
實施例?
if (response as? NSHTTPURLResponse!)?.statusCode == 200 {
你爲什麼不測試它? –
我做了:-),它的工作原理!我只是不確定這是否是「很好」和「安全」的正確方法。 – Laurent