ios - 强制向下转型的安全方式

标签 ios swift

<分区>

是否有一种“安全”的方式来编写此代码以防止运行时错误?

for posts in resultsArray as! [AnyObject] {
    //do stuff
}

我觉得 if-let 或 guard 语句在这里可以工作,我不确定如何使用 for-in 循环使其工作。

最佳答案

  • as 用于向上转换和类型转换为桥接类型
  • as? 用于安全转换,如果失败则返回 nil
  • as! 用于强制转换,如果失败则崩溃

安全向下转型

for posts in resultsArray as? [AnyObject] {
    //do stuff
}

posts 将是 AnyObject? 类型的变量。如果底层类型不是它会无害地只是分配 nil


不安全的向下转型

for posts in resultsArray as! [AnyObject] {
    //do stuff
}

这也会导致帖子类型为 AnyObject?,但如果基础类型为其他类型,它会崩溃

Reference

关于ios - 强制向下转型的安全方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36342006/

相关文章:

ios - 将代码从 Swift 2 更改为 swift 4

iphone - 适用于 Windows 平台上 iOS 开发的 Titanium

ios - 在 Swift 中将 Int 转换为 String

swift - 如何使用 CNContact.predicateForContacts 检索所有联系人?

ios - 需要帮助理解 UIViewController 和 UIWindow 初始化

objective-c - 字符串问题

ios - shouldChangeCharactersInRange 返回旧结果 iOS

ios - 解析嵌套的 JSON Swift 3

iOS:如何在框架内加载 xib

xcode - 限制输入字段中的字符