首页 > 解决方案 > 防止应用程序崩溃以防图像从 Xcode 重命名/删除

问题描述

我已经在我的 UIImageView 中设置了徽标图像并运行它并且它工作正常,但如果有人错误地删除/重命名图像然后再次运行并且我的应用程序崩溃,因为 Xcode 找不到该图像。在这里,我需要实现,如果 Xcode 由于重命名/删除而找不到此类图像,则它不会崩溃,但应该设置一些占位符图像并且它在所有 UIImageViews 的项目中也是全局的。所以任何人都可以在这方面帮助我。提前致谢。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

标签: iosswiftxcode

解决方案


Quoc Nguyen 是正确的。您可以只使用图像文字名称。像这样:

private lazy var logoImageView: UIImageView = {
    let imageView = UIImageView(image: UIImage(named: "swift_logo"))
    imageView.translatesAutoresizingMaskIntoConstraints = false
    return imageView
}()

UIImageView初始化方法可以接受一个可选 UIImage对象:

init(image: UIImage?)

并且UIImage使用名称的初始化方法产生可选 UIImage对象。

init?(named name: String)

这意味着,您可以安全地使用它。无论您的徽标是否存在。我希望这有帮助!

更新:

您可以制作自己的UIImage类扩展来声明您的资产,这样当您需要重命名资产时,您必须重命名一次,并且更改将应用​​于整个项目(全局,如您所说)。

import UIKit

/// A category for handling images
extension UIImage {

    // MARK: - Home Assets

    static let swiftLogo = UIImage(named: "swift_logo") 
}

你可以像这样使用它:

private lazy var logoImageView: UIImageView = {
    let imageView = UIImageView(image: .swiftLogo)
    imageView.translatesAutoresizingMaskIntoConstraints = false
    return imageView
}()

推荐阅读