如何用快速语言输入强制转换

时间:2015-06-22 07:11:28

标签: swift types casting

请告诉我如何使用Swift语言输入。

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

2 个答案:

答案 0 :(得分:1)

该代码应转换为类似

的内容
let view = FXImageView(imageWithContensOfURL(items[index]))

希望有所帮助:)

答案 1 :(得分:0)

swift中有三个用于类型转换的关键字。

第一个是as。它用于从子类转换为超类的情况。如果您使用as进行类型转换,则会在编译时检查它是否保证转换永远不会失败。所以它的使用非常有限。这是一个示例:

class SuperClass {}

class SubClass: SuperClass {}

let a = SubClass()
let b = a as SuperClass

第二个是as?。它基本上像这样工作。如果转换成功,则返回Optional.Some<YourType>(yourObject),如果失败则返回Optional<YourType>.None(等nil)。这是一个示例:

let someValue = 20
if let castedValue = someValue as? String {
    print("casting successfull. The value is \(castedValue)")
} else {
    print("casting failed")
}

此处显然从IntString的投降将失败,并且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

上使用Optional方法
(view as? FXImageView).map { $0.setImageWithContentsOfURL(items[index]) }