运行时错误:SwiftUI:在主包的资产目录中找不到名为“”的图像

Tom*_*OON 6 swiftui

这是我收到的错误:

runtime: SwiftUI: No image named '' found in asset catalog for main bundle (/Users/yun/Library/Developer/CoreSimulator/Devices/623B1BB3-5C34-4311-AA41-86C42FE27439/data/Containers/Bundle/Application/8E87B349-36CA-41B8-A34C-02BBB2F00472/Travel.app)
Run Code Online (Sandbox Code Playgroud)

该图像没有名称,只有'',所以我找不到错误的原因。

//  AppDelegate.swift <br>
class AppDelegate: UIResponder, UIApplicationDelegate { <-- this is the break point...
Run Code Online (Sandbox Code Playgroud)

Sam*_*-IH 8

您收到的错误意味着您在代码中的某个位置正在启动Image("some name")并传入空字符串“”。

尝试在 Xcode 中搜索Image(,看看是否有任何图像视图,默认值为空。

另外,如果您确实想调试这个问题,并在可能的数千行代码中找到丢失的图像名称,您可以尝试这个漂亮的扩展:

#if DEBUG
    extension Image {
        init(_ str: String) {
            guard let img = UIImage(named: str) else {
                print(str)
                fatalError("found an image that doesn't exist, see: /sf/answers/4410439491/")
            }
            self.init(uiImage: img)
        }
        init(systemName sys: String) {
            guard let img = UIImage(systemName: sys) else {
                print(sys)
                fatalError("found an image that doesn't exist, see: /sf/answers/4410439491/")
            }
            self.init(uiImage: img)
        }
        
    }
#endif
Run Code Online (Sandbox Code Playgroud)

当它发现丢失的图像时,它会强制崩溃,您可以直接导航到导致崩溃的代码行:

描述如何找到该线的图像

或者,您可以轻松修改上述扩展,为所有空图像提供默认值:

extension Image {
    init(_ str: String) {
        self.init(uiImage: 
             UIImage(named: str) ?? UIImage(named: "Some default image")!
        )
    }
}
Run Code Online (Sandbox Code Playgroud)