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



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

虽然框架被导入并且其功能可以很好地调用,但它的方法之一尝试从随附的捆绑包中加载笔尖,由于原因,它以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调用之后,但在响应块执行之前。

这是否与未加载捆绑包有关,还是框架本身有问题?

如果您使用代码确实加载笔尖,则需要确保从正确的捆绑包加载它:

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

如果您使用的是情节提要,请确保选择正确的模块(框架(。您可以在身份检查器中选择模块(在界面生成器中按 cmd+alt+3(。

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

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

最新更新