Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用swift语言输入cast_Swift_Types_Casting - Fatal编程技术网

如何用swift语言输入cast

如何用swift语言输入cast,swift,types,casting,Swift,Types,Casting,请让我知道如何用Swift语言输入cast [(FXImageView *)view setImageWithContentsOfURL:[items objectAtIndex:index]]; 这些代码应该翻译成 let view = FXImageView(imageWithContensOfURL(items[index])) 希望有帮助:)在swift中有三个用于打字的关键字 第一个是as。它用于从子类到超类的转换。如果您将用作类型转换,则会在编译时进行检查,以确保转换从未失败。所

请让我知道如何用Swift语言输入cast

[(FXImageView *)view setImageWithContentsOfURL:[items objectAtIndex:index]];

这些代码应该翻译成

let view = FXImageView(imageWithContensOfURL(items[index]))

希望有帮助:)

在swift中有三个用于打字的关键字

第一个是
as
。它用于从子类到超类的转换。如果您将
用作
类型转换,则会在编译时进行检查,以确保转换从未失败。所以它的用途相当有限。以下是一个示例:

class SuperClass {}

class SubClass: SuperClass {}

let a = SubClass()
let b = a as SuperClass
let someValue = 20
if let castedValue = someValue as? String {
    print("casting successfull. The value is \(castedValue)")
} else {
    print("casting failed")
}
第二个是
as?
。它基本上是这样工作的。如果强制转换成功,则返回一个
可选的.Some(您的对象)
,如果强制转换失败,则返回
可选的.None
(etc
nil
)。以下是一个示例:

class SuperClass {}

class SubClass: SuperClass {}

let a = SubClass()
let b = a as SuperClass
let someValue = 20
if let castedValue = someValue as? String {
    print("casting successfull. The value is \(castedValue)")
} else {
    print("casting failed")
}
在这里,从
Int
String
的强制转换显然会失败,而
else
部分将被执行

第三个是
as。它的用例类似于
as?
。如果强制转换成功,您将获得隐式展开选项,如果失败,您的程序将崩溃(与其他操作一样,包括
)。这是一个使用示例

let someValue = 20
let castedValue = someValue as! String
只有在确信铸造操作始终成功的情况下,才应使用此工具。对于你的代码,我会这样写

if let imageView = view as? FXImageView {
    imageView.setImageWithContentsOfURL(items[index])
} else {
    // handle the fail part
}
或者使用
map
方法打开
可选

(view as? FXImageView).map { $0.setImageWithContentsOfURL(items[index]) }

很好地解释了此函数的可能重复项。是否尝试调用函数FXImageView()?