在 iOS 上使用下载包中包含的 XIB/NIB 文件
Posted
技术标签:
【中文标题】在 iOS 上使用下载包中包含的 XIB/NIB 文件【英文标题】:Using XIB/NIB files contained within downloaded bundles on iOS 【发布时间】:2012-01-08 18:59:35 【问题描述】:从表面上看,这似乎是一个非常简单的问题,但由于某种原因,我无法让它工作。
我有一个杂志风格的应用程序,它以压缩包的形式下载每期的数据。
下载并解压后,应用程序会按预期成功访问捆绑包中包含的各种文件。其中包括 JSON、PNG、JPG、视频等。
但是,我还包含了一个 XIB 文件,其中包含一系列 UIView 中内容的物理布局,而我不能使用这个文件。
该文件存在,但是当我尝试使用以下方式加载它时:
UIViewController *controller = [[UIViewController alloc] initWithNibName: @"ViewController" bundle: assetBundle];
我收到以下错误:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/C6718DB8-0C0F-4D38-84E6-55C145279957/Documents/asset-4.bundle> (not yet loaded)' with name 'ViewController''
现在,这是 ios 对不从下载的包访问 XIB 施加的限制,还是我在调用 XIB 以供使用时犯了一些错误?
但是,我找不到任何明确禁止以这种方式使用获取的捆绑包。
【问题讨论】:
【参考方案1】:我不确定您是否可以“合法地”摆脱这种情况。但问题可能是您提供的是“xib”而不是“nib”的编译版本。
您可以使用提供的ibtool
程序从命令行手动执行此操作。
ibtool --errors --warnings --output-format human-readable-text --compile $OUTPUT_NAME $INPUT_NAME
然后,您可以将编译后的 .nib 文件放入包中并按照您的尝试进行加载。
【讨论】:
我猜是合法的,因为XIB不是可执行代码,只是界面布局。 希望如此!无论如何,我已经向 Apple 提交了一个请求以找出答案 - 我会在收到回复后发布他们的详细回复。 这可能没问题,因为您没有加载任何可执行代码。但总有机会。 我在派生数据位置而不是在创建包的文件夹中进行编译。谢谢。 任何线索是什么意思? Interface Builder Cocoa Touch Tool[40004:13603] CFPreferences:文件中的用户主目录://localhost/Users/以上是关于在 iOS 上使用下载包中包含的 XIB/NIB 文件的主要内容,如果未能解决你的问题,请参考以下文章