gpt4 book ai didi

swift - 向下转型和可选 : is this code idiomatic?

转载 作者:行者123 更新时间:2023-11-30 14:18:30 24 4
gpt4 key购买 nike

我想确保在这两种情况下我的语法都是正确的,该类是 super 类还是派生类?以下代码有问题吗?

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))

使用此语法的代码示例 (dataTaskURL):

对象:

if ([response isKindOfClass:[NSHTTPURLResponse class]] && [(NSHTTPURLResponse *)response statusCode] != 200) {

类似 Swift ObjC:

if response.isKindOfClass(NSHTTPURLResponse.self) && (response as! NSHTTPURLResponse).statusCode != 200 {

更好的 swift ?

if (response as? NSHTTPURLResponse!)?.statusCode == 200 {

最佳答案

这是 Swift 方式(既安全又美观):

if (response as? NSHTTPURLResponse)?.statusCode == 200 {

它使用条件转换可选链接来测试该类是否为NSHTTPURLResponse以及statusCode200。请注意,NSHTTPURLResponse 之后不需要 !

如果 response 是另一个类,则 (response as? NSHTTPURLResponse) 将返回 nil,因此整个可选链将返回 nil 并且由于 nil != 200 测试将失败。

关于swift - 向下转型和可选 : is this code idiomatic?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30825343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com