作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想确保在这两种情况下我的语法都是正确的,该类是 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
以及statusCode
是200
。请注意,NSHTTPURLResponse
之后不需要 !
。
如果 response
是另一个类,则 (response as? NSHTTPURLResponse)
将返回 nil
,因此整个可选链将返回 nil
并且由于 nil != 200
测试将失败。
关于swift - 向下转型和可选 : is this code idiomatic?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30825343/
在Java编程中经常碰到类型转换,对象类型转换主要包括向上转型和向下转型。 向上转型 我们在现实中常常这样说:这个人会唱歌。在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就是说我们
当使用使用 C 风格继承的 C API 时,(利用 C 结构的标准布局),例如 GLib ,我们通常使用 C 风格的转换来向下转换: struct base_object { int x;
我是一名优秀的程序员,十分优秀!