Предотвращение сбоя приложения при переименовании / удалении изображения из xcode

Я установил изображение логотипа в свой UIImageView & работает, и он работает нормально, но в случае, если кто-то удалил / переименовал изображение по ошибке, он снова запускается, и мое приложение вылетает, потому что Xcode не может найти это изображение. Здесь мне нужно реализовать, что если такие изображения не найдены Xcode из-за переименования / удаления, тогда он не разбился, но должно быть установлено какое-то изображение-заполнитель, и оно также глобально в проекте для всех UIImageViews. Так может ли кто-нибудь мне в этом помочь. Заранее спасибо.

enter image description here

enter image description here

enter image description here

просто используйте UIImage (named :) вместо Image Literal

Quoc Nguyen 26.10.2018 06:09

Я предлагаю вам просто удалить весь актив из каталога (а не только отдельные изображения из него, как показано на скриншоте), а затем добавить его обратно. Обычно это помогает мне. Нет необходимости использовать UIImage(named: "") или что-то еще.

LinusGeffarth 26.10.2018 08:45
3
2
246
1

Ответы 1

Куок Нгуен прав. Вы можете просто использовать буквальное имя изображения. Вот так:

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

Метод инициализатора UIImageView может принимать объект по желаниюUIImage:

init(image: UIImage?)

И метод инициализатора UIImage с использованием name создает объект по желанию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
}()

@Quoc Nguyen tnx и u оба правильные, но я хочу, чтобы он работал глобально в проекте со всеми UIImageView, что означает что-то другое, удобно, если возможно ..

iAj 26.10.2018 07:43

Смотрите мой обновленный ответ. Надеюсь, это поможет. Не забудьте выбрать ответ, чтобы закрыть свой вопрос.

Glenn Posadas 26.10.2018 08:42

Другие вопросы по теме