Как преобразовать UIImage в imageWithContentsOfFile в Swift 3.0

Я создал последовательность изображений png для анимации через объект UIImage (около 30 изображений png для создания анимации - 100 кб каждая)

Однако после просмотра документации Apple не лучший выбор для кэширования изображений через объект UIImage (слишком большой объем памяти):

https://developer.apple.com/documentation/uikit/uiimage#//apple_ref/occ/clm/UIImage/imageNamed:

После просмотра нескольких других сообщений SO лучший способ - создать новую папку группы ( "Анимация" ) и сохранить PNG в новой папке и вызвать их через contentsOfFile:

Я сделал все вышеперечисленное, сохранил изображения в новой группе и обновил свой код, но я все еще что-то пропустил (сбросив фатальную ошибку: неожиданно нашел нуль при развертывании необязательного значения)

Вот мой текущий код (используя UIImage):

func createImageArray(total: Int, imagePrefix: String) -> [UIImage]{
    var imageArray: [UIImage] = []
    for imageCount in 0..<total {
    let imageName = "\(imagePrefix)-\(imageCount).png"
    let image = UIImage(named: imageName)!
    imageArray.append(image)
    }
    return imageArray
    }

И вот мой обновленный код (с использованием contentOfFile):

func createImageArray(total: Int, imagePrefix: String) -> [UIImage]{
    var imageArray: [UIImage] = []
    for imageCount in 0..<total {
    let imageName = "\(imagePrefix)-\(imageCount)" // updated
    //let image = UIImage(named: imageName)!

    let bundlePath = Bundle.main.path(forResource: imageName, ofType: "png")
    let image = UIImage(contentsOfFile: bundlePath!)

    imageArray.append(image!)
    }
    return imageArray
    }

Вот остальная часть моего кода:

Я определяю переменные экземпляра моего ViewController:

var animation1: [UIImage] = []
var animation2: [UIImage] = []
var animation3: [UIImage] = []

Затем я создаю анимационный массив для каждой анимации:

func createImageArray(total: Int, imagePrefix: String) -> [UIImage]{
    var imageArray: [UIImage] = []
    for imageCount in 0..<total {
    let imageName = "\(imagePrefix)-\(imageCount)" // updated
    let image = UIImage(named: imageName)!
    imageArray.append(image)
    }
    return imageArray
    }

Затем я устанавливаю значения анимации:

func animate(imageView: UIImageView, images: [UIImage]){
    imageView.animationImages = images
    imageView.animationDuration = 1.5
    imageView.animationRepeatCount = 1
    imageView.startAnimating() }

    animation1 = createImageArray(total: 28, imagePrefix: "ImageSet1")
    animation2 = createImageArray(total: 53, imagePrefix: "ImageSet2")
    animation3 = createImageArray(total: 25, imagePrefix: "ImageSet3")

И, наконец, вызовите функцию анимации

func showAnimation() {
    UIView.animate(withDuration: 1, animations: {
        animate(imageView: self.animationView, images: self.animation1)

        }, completion: { (true) in

        })
    }

Спасибо за любую помощь:)

4b9b3361