无法在捆绑包中加载 NIB - 捆绑包尚未加载

Could not load NIB in bundle - Bundle not yet loaded

刚遇到一个问题,我需要使用外部框架和包。

虽然导入了框架并且可以很好地调用其函数,但其​​中一种方法试图从随附的包中加载笔尖,由于

的原因,该包以 NSInternalInconsistencyException 结尾

"Could not load NIB in bundle".

我注意到虽然捆绑包位于复制捆绑资源中并且可以通过调用 Bundle.allBundles 找到,但错误消息显示捆绑包是 "not yet loaded"。有什么我应该做的,以便可以预先加载捆绑包吗?

Update: 之前没有提供相关代码是因为错误是框架调用的附带影响,所以不知道nib具体如何"loaded"。 代码本身是这样的:

if let request = AUTRequest.init(transactionType: .debitGeneric) {
    AUTCTFClient.executeTransaction(with: request, from: self) { (_response) in
       if let response = _response {
           print(response)
       }
    }
}

self 是当前 viewcontroller,错误发生在 executeTransaction 调用之后但响应块执行之前。

这是否与未加载 Bundle 有某种关系,还是框架本身有问题?

如果您使用代码加载 nib,您需要确保从正确的包中加载它:

let bundle = Bundle(for: ClassName.self)
let view = bundle.loadNibNamed("nib_name", owner: nil, options: nil)![0]

如果您使用故事板,请确保select更正模块(框架)。您可以 select 身份检查器中的模块(在界面构建器中按 cmd+alt+3)。

在尝试寻找解决方案一段时间后,最明显的答案是所讨论的框架是用缺少的文件编译的,"AUTCTFClient.executeTransaction" 试图在其执行时调用。这一点是 "confirmed" 旧版本框架显示的某种执行进度视图。 (但遗憾的是它们在我们的案例中不可用)

如果您不知何故遇到了这个问题,最好向所有者(或搜索)询问他们框架的更新或稳定版本。