在捆绑包中找不到文件

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

我刚刚提交了我的应用程序以供商店审核,并收到了一些包含此错误的 Crashlytics 报告:

致命错误:无法在捆绑包中找到 CountryNumbers.json。

在本地运行期间,通过调试和发布(以及模拟器和真实设备),应用程序可以正常工作。我已经检查了副本捆绑资源,文件就在那里。

我在变量静态初始化期间读取文件

static let allCountries: [CPData] = Bundle.main.decode("CountryNumbers.json")

和解码扩展代码

extension Bundle {
    func decode<T: Decodable>(_ file: String) -> T {
        guard let url = self.url(forResource: file, withExtension: nil) else {
            fatalError("Failed to locate \(file) in bundle.")
        }
     .....

有谁知道我是否错过了配置或者为什么会发生这种情况?

swift xcode
1个回答
0
投票

您的捆绑扩展名错误。你说的是

self.url(forResource: file, withExtension: nil)

但是从捆绑包中获取此文件 CountryNumbers.json 的方法是提供

"CountryNumber"
作为
file
值,并提供
"json"
作为
withExtension
值。您没有这样做,因此获取失败。您将需要重写此扩展及其使用。

(而且我看不出这与“解码”有什么关系。json 文件未在捆绑包中进行编码。)


顺便说一句,关于测试:

在本地运行期间,通过调试和发布(以及模拟器和真实设备),应用程序可以正常工作

但这还不是一个充分的测试。您还应该将应用程序提交到 TestFlight,下载 TestFlight 版本并运行它。这就会暴露问题。

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