R3D*_*vil 5 assets resourcebundle swift ios13 xcode11
我们的 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)
Run Code Online (Sandbox Code Playgroud)
(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.}
Run Code Online (Sandbox Code Playgroud)
这是我在 iOS 12 设备和 iOS 13 设备上得到的响应。但是资产在 iOS 12 上加载良好。
我尝试了以下方法但无济于事:
1. 由于 Xcode 11 存在问题,抛出多个路径生成相同的文件错误,我将 .car 资产目录从 Assets.car 重命名为更具描述性的内容。
2. 在 bundle 变量上调用 .load() 以尝试加载它,因为它一直说未加载。
3.尝试加载带有扩展名的图像,也尝试添加一些特征并使用该UIImage(named: <name>, in: <bundle>, compatibleWith: <traits>)方法。
在苹果论坛上发现了这个问题,但这与我所看到的行为几乎没有什么不同。
不知道为什么当应用程序使用 Xcode 11 构建并在 iOS 12 上运行时资产加载良好,但在 iOS 13 设备/模拟器上运行时不加载。
任何帮助将不胜感激,我对这个问题感到目瞪口呆。谢谢!
您用于加载区分大小写的名称是否与资产目录名称完全相同?
迁移到 Xcode 11 时遇到这个问题,问题本质是
UIImage(named: "fooImage"...
当目录中的实际名称是“FooImage”时。
因此,请先检查您的区分大小写的名称...
| 归档时间: |
|
| 查看次数: |
1374 次 |
| 最近记录: |