Xcode 11:无法在iOS 13上的自定义捆绑包中实例化资产目录(.car文件)中的图像

问题描述 投票:3回答:1

我们的iOS应用具有一个自定义捆绑包,其中包含资产目录(.car文件)。这是自iOS 9以来的设置。直到现在,在Xcode 11上的iOS 13上,获取图像资产并使用它们一直不是问题(不确定使用xcode 10构建并在iOS 13上运行的应用程序是否可以工作)。

这是在应用程序中使用捆绑软件的方式:screenshot

使用以下代码获取捆绑包:

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设备/模拟器上运行时却不加载资产。

任何帮助将不胜感激,我对此问题感到震惊。谢谢!

swift assets ios13 resourcebundle xcode11
1个回答
0
投票

您用来加载区分大小写的名称与资产目录名称完全相同吗?

已经将此问题迁移到Xcode 11,而该问题本质上是

UIImage(named: "fooImage"...

当目录中的实际名称是“ FooImage”时。

因此,请首先检查您的区分大小写名称...

© www.soinside.com 2019 - 2024. All rights reserved.