loadImageFromDisk - функция модификации swift - PullRequest
0 голосов
/ 26 апреля 2020

Я использую приведенный ниже код для загрузки загруженного изображения с диска, когда файл существует, я могу загрузить его как изображение. Если это не так, изображение возвращается как nil.

Как я могу изменить код, чтобы заменить return nil загрузкой изображения заполнителя из папки с активами default.png. Таким образом, вместо возврата nil, всегда есть возврат изображения, либо загруженный, который пытается загрузить, либо, если он не существует, мой собственный образ ресурса.

func loadImageFromDiskWith(fileName: String) -> UIImage? {
  let documentDirectory = FileManager.SearchPathDirectory.documentDirectory

    let userDomainMask = FileManager.SearchPathDomainMask.userDomainMask
    let paths = NSSearchPathForDirectoriesInDomains(documentDirectory, userDomainMask, true)

    if let dirPath = paths.first {
        let imageUrl = URL(fileURLWithPath: dirPath).appendingPathComponent(fileName)
        let image = UIImage(contentsOfFile: imageUrl.path)
        return image
    }
    return nil
}

1 Ответ

1 голос
/ 26 апреля 2020

Вы можете сделать, как показано ниже -

func loadImageFromDiskWith(fileName: String) -> UIImage {
  let documentDirectory = FileManager.SearchPathDirectory.documentDirectory

    let userDomainMask = FileManager.SearchPathDomainMask.userDomainMask
    let paths = NSSearchPathForDirectoriesInDomains(documentDirectory, userDomainMask, true)
    var image = UIImage(named: "default") // Make sure there must be "default.png" in your main bundle.
    if let dirPath = paths.first {
        let imageUrl = URL(fileURLWithPath: dirPath).appendingPathComponent(fileName)
        if FileManager.default.fileExists(atPath: imageUrl.path) { //Check here for file existence. It won't crash.
              image = UIImage(contentsOfFile: imageUrl.path)
         }
    }

    return image
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...