0

只是遇到了我需要使用外部框架和捆绑包的问题。

虽然框架被导入并且可以很好地调用它的函数,但它的一个方法尝试从随附的包中加载一个 nib,它以 a 结尾NSInternalInconsistencyException的原因

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

我注意到,虽然捆绑包位于 Copy Bundle Resources 中并且可以通过调用找到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 或框架本身有问题有关?

4

2 回答 2

0

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

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

如果您使用故事板,请确保选择正确的模块(框架)。您可以在 Identity Inspector 中选择模块(在界面生成器中按 cmd+alt+3)。

于 2018-08-07T16:19:22.340 回答
0

在尝试找到解决方案一段时间后,最明显的答案是有问题的框架是用丢失的文件编译的,“AUTCTFClient.executeTransaction”试图在其执行中调用。旧版本的框架“确认”了这一点,显示了某种执行进度视图。(但遗憾的是,它们在我们的案例中不可用)

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

于 2018-11-13T01:16:19.510 回答