Swift 4 добавить изображения в массив изображений - PullRequest
0 голосов
/ 11 июня 2018

У меня есть этот код:

var imgArr: [UIImage?] = []
imgArr = [UIImage(named: "a1.jpg"), UIImage(named: "a2.jpg"), UIImage(named: "a3.jpg"), UIImage(named: "a4.jpg"), UIImage(named: "a5.jpg")] // this is files in assets



let documentsDir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
            let path = documentsDir.appendingPathComponent((AppGlobalManager.sharedManager.loggedUser?.selectedLanguage)! + "/json/myPackageData.json") // this is json file in documents folder
            do {
                let data = try Data(contentsOf: path)
                let decoder = JSONDecoder()
                let jsonData = try decoder.decode(MyPackageData.self, from: data)

                for image in jsonData.tipsSlidesSizes.keys {
                    print("<!= \(image)")
                    imgArr.append(UIImage(named: image))
                }


            } catch {
                print("ConceptGalleryView - Error 1030: Problem with parse file. \(error)")
            }

            print("Summary:")
            debugPrint(imgArr)

У меня есть фото в пути: Documents / myimages /......

В результате этого кода я получаю:

Summary:
[Optional(<UIImage: 0x6000000b1d60>, {1000, 750}), Optional(<UIImage: 0x60c0000ae580>, {600, 630}), Optional(<UIImage: 0x60c0000aeb80>, {1537, 1080}), Optional(<UIImage: 0x60c0000aedc0>, {1035, 1608}), Optional(<UIImage: 0x6080000ae5e0>, {1280, 853}), nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]

А файлы не видны позже в слайдере.

Почему я не вижу в таблице моих фотографий?Что не так с этим кодом?

ОБНОВЛЕНИЕ КОДА

ОК, я пытаюсь обновить мой код с вашим предложением:

let documentsDir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
            let path = documentsDir.appendingPathComponent((AppGlobalManager.sharedManager.loggedUser?.selectedLanguage)! + "/json/myPackageData.json")
            do {
                let data = try Data(contentsOf: path)
                let decoder = JSONDecoder()
                let jsonData = try decoder.decode(MyPackageData.self, from: data)

                for image in jsonData.tipsSlidesSizes.keys {
                    print("<!= \(image)")
                    imgArr.append(UIImage(named: image))
                    let imgPath = documentsDir.appendingPathComponent((AppGlobalManager.sharedManager.loggedUser?.selectedLanguage)! + "/GET_TIPS_SLIDES/")

                    let dataImg = NSData(contentsOf: URL(string: imgPath.path)!)
                    if let img = UIImage(data: dataImg) {
                        imgArr.append(UIImage(named: img))
                    }

                }


            } catch {
                print("ConceptGalleryView - Error 1030: Problem with parse file. \(error)")
            }

но яесть ошибка в:

if let img = UIImage(data: dataImg) {

Невозможно преобразовать значение типа 'NSData?'к ожидаемому типу аргумента «Данные»

1 Ответ

0 голосов
/ 11 июня 2018

Вы должны получить NSData из вашего пути DocumentDirectory, после этого преобразуйте в ваше изображение:

if let dataImg = NSData(contentsOf: URL(string: "")!) {
      if let img = UIImage(data: dataImg as Data) {

      }
}

, где imgPath : путь к вашему изображению DocumentDirectory

...