【问题标题】:Loading with loadNibNamed(_:owner:options:) error handling [duplicate]使用 loadNibNamed(_:owner:options:) 错误处理加载
【发布时间】:2019-07-18 14:33:46
【问题描述】:

我正在使用 xib 文件来加载我的视图。所以我使用 loadNibNamed(_:owner:options:) 方法,这个方法返回类型是:[Any]?。 据我了解,如果出现问题,它应该返回 nil,但是当我尝试加载不存在的文件时,我的应用程序会终止异常。我认为如果没有给定名称的 xib 文件,loadNibNamed 将返回 nil。 所以我的问题是:有没有办法通过保护或 if 语句检查 xib 文件是否存在而不会从应用程序中获得异常?

这是我的代码:

if let view = Bundle.main.loadNibNamed(name,
                                       owner: self,
                                       options: nil)?.first as? UIView {
   return view
}
else {
   fatalError("no file")
}

【问题讨论】:

  • @ShalvaAvanashvili,非常感谢,它成功了。我认为下次我应该对现有问题进行更好的研究......

标签: ios swift


【解决方案1】:

您需要在尝试加载之前验证 xib 是否存在。

示例:

func loadXib() -> UIView? {
    guard Bundle.main.path(forResource: "View", ofType: "nib") != nil else {
        // file not exists
        return nil
    }

    if let view = Bundle.main.loadNibNamed("View",
                                           owner: self,
                                           options: nil)?.first as? UIView {
        return view
    }

    return nil
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 1970-01-01
    相关资源
    最近更新 更多