我们的iOS应用具有一个自定义捆绑包,其中包含资产目录(.car文件)。 自iOS 9以来,就一直进行此设置。直到现在,在Xcode 11上的iOS 13上,获取图像资产并使用它们一直不是问题(不确定使用xcode 10构建并在iOS 13上运行的应用程序是否可以工作)。>
使用以下代码获取捆绑包:
let bundlePath = Bundle.main.path(forResource: "TheResource", ofType: "bundle")!
var bundle = Bundle(path: bundlePath)
现在,当我打印此bundle
变量时,我得到以下信息:
(lldb) po bundle
▿ Optional<NSBundle>
- some : NSBundle </Users/xyz/Library/Developer/CoreSimulator/Devices/SE8C7E9D-76AF-4564-B21B-78DC990F3D2E/data/Containers/Bundle/Application/PD422A04-B4C8-42F0-A5CB-9465AC70D3A2/abc.app/TheResource.bundle> (not yet loaded)
(lldb) po bundle.loadAndReturnError()
Error Domain=NSCocoaErrorDomain Code=4 "The bundle “TheResource” couldn’t be loaded because its executable couldn’t be located." UserInfo={NSLocalizedFailureReason=The bundle’s executable couldn’t be located., NSLocalizedRecoverySuggestion=Try reinstalling the bundle., NSBundlePath=/Users/xyz/Library/Developer/CoreSimulator/Devices/SE8C7E9D-76AF-4564-B21B-78DC990F3D2E/data/Containers/Bundle/Application/PD422A04-B4C8-42F0-A5CB-9465AC70D3A2/abc.app/TheResource.bundle, NSLocalizedDescription=The bundle “TheResource” couldn’t be loaded because its executable couldn’t be located.}
这是我在iOS 12设备和iOS 13设备上都收到的响应。但是资产可以在iOS 12上正常加载。
我尝试了以下操作但无济于事:
1.由于Xcode 11抛出引发相同文件错误的多个路径存在问题,因此我将Assets.car中的.car资产目录重命名为更具描述性的名称。
2.在bundle变量上调用.load()尝试加载它,因为它一直说未加载。
3.尝试加载带有扩展名的图像,还尝试添加一些特征并使用UIImage(named: <name>, in: <bundle>, compatibleWith: <traits>)
方法。
发现了这个question on apple forum,但与我所看到的行为没什么不同。
不知道为什么使用Xcode 11构建应用程序并在iOS 12上运行时资产加载正常,而在iOS 13设备/模拟器上运行时却不加载资产。
任何帮助将不胜感激,这个问题使我感到震惊。 谢谢!
答案 0 :(得分:0)
您用来加载区分大小写的名称与资产目录名称完全相同吗?
将这个问题移植到Xcode 11并从本质上说是问题
UIImage(named: "fooImage"...
当目录中的实际名称为“ FooImage”时。
所以请先检查您的区分大小写名称...