【问题标题】:Swift 4 add images to image arraySwift 4 将图像添加到图像数组
【发布时间】:2018-11-20 10:18:56
【问题描述】:

我有这个代码:

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”类型的值?到预期的参数类型“数据”

【问题讨论】:

  • 尝试将 imgArr 声明更改为 var imaArr = [UIImage]()
  • UIImage(named: image) 不会从自定义路径加载图像,仅当包含在资产库中时。否则你需要自己加载它们。
  • 试试imgArr.append UIImage(contentsOfFile: image))
  • 使用数据代替 NSData
  • 我做这个:imgArr.append(UIImage(named: image)) let imgPath = documentsDir.appendingPathComponent((AppGlobalManager.sharedManager.loggedUser?.selectedLanguage)! + "/image/" + image) imgArr.append (UIImage(contentsOfFile: imgPath.path)) - 它不工作 :(

标签: ios swift swift3 swift4


【解决方案1】:

您必须从 DocumentDirectory 路径中获取 NSData,然后转换为您的图像:

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

      }
}

where imgPath : 你的 DocumentDirectory 图片路径

【讨论】:

  • 我在第一篇文章中更新了我的代码。你能检查我的代码吗?
猜你喜欢
  • 1970-01-01
  • 2019-05-22
  • 2022-01-12
  • 2016-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-20
相关资源
最近更新 更多