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

时间:2018-08-07 14:55:54

标签: swift frameworks bundle xcode9.4

遇到一个需要使用外部框架和捆绑软件的问题。

虽然导入了框架并且可以很好地调用其功能,但是其中一种方法尝试从随附的包中加载笔尖,由于原因,该包以NSInternalInconsistencyException结尾

  

“无法在捆绑包中加载NIB”。

我注意到,当捆绑包位于“复制捆绑包资源”中并且可以通过调用Bundle.allBundles来找到时,错误消息指出捆绑包为"not yet loaded"。我应该做些什么,以便可以事先装入捆绑包吗?

更新:我之前没有提供相关代码,因为该错误是作为框架调用的附带影响而发生的,因此我不确切知道笔尖是如何“加载”的。 代码本身是这样的:

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

self是当前的视图控制器,并且错误发生在executeTransaction调用之后但执行响应块之前。

这是否与不加载Bundle有关,还是框架本身存在问题?

2 个答案:

答案 0 :(得分:0)

如果您正在使用代码来加载笔尖,则需要确保从正确的捆绑软件中加载它:

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

如果您使用情节提要,请确保选择正确的Module(框架)。您可以在Identity Inspector中选择模块(在界面构建器中,按cmd + alt + 3)。

答案 1 :(得分:0)

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

如果您因某种原因遇到了此问题,最好向所有者(或进行搜索)询问其框架的更新版本或稳定版本。