【问题标题】:saving and reading array of images with its data in NSUserDefaults or in Document Directory在 NSUserDefaults 或文档目录中保存和读取图像数组及其数据
【发布时间】:2016-10-28 00:40:05
【问题描述】:

我正在尝试在下载后将图像及其数据附加到数组中,然后尝试保存在 NSUserDefaults 中。但是得到一个错误。我不知道保存和阅读它的正确方法是什么。 谁能告诉我我该怎么做? 谢谢

var imgIndex = 0
var imageArray : [UIImage] = []
typealias CompletionHandler = (image: UIImage) -> Void

downloadFileFromURL(NSURL(string: self.posts.objectAtIndex(indexPath.row).valueForKey("enclosure") as! String)!, completionHandler:{(img) in
                dispatch_async(dispatch_get_main_queue(), { () -> Void in
                    cell.sideImageView.image = img
                    imageArray.insert(img, atIndex: self.imgIndex) //.append(img)
                    self.imgIndex++
                    print("Image append with data")
                    self.newsDefaults.setObject(imageArray, forKey: "image")

                })
            })


func downloadFileFromURL(url1: NSURL?,completionHandler: CompletionHandler) {
    // download code.
    if let url = url1{
        let priority = DISPATCH_QUEUE_PRIORITY_HIGH
        dispatch_async(dispatch_get_global_queue(priority, 0)) {
            let data = NSData(contentsOfURL: url)
            if data != nil {
                print("image downloaded")
                completionHandler(image: UIImage(data: data!)!)
            }
        }
    }
}

【问题讨论】:

  • 错误是什么?编译错误?运行?哪一行?
  • 您不应尝试将图像(或其数据)存储在用户默认值中。用户默认值适用于小项目,而不是图像数组那么大的东西。最好将图像保存到您的文档目录,然后将这些图像的路径保存到用户默认值。
  • 你能告诉我如何在文档目录中保存图像数组吗?我的代码也有问题,它不会在数组中附加图像。它给了我错误fatal error: Array index out of range 我开始从 0 索引附加图像。?

标签: ios swift nsuserdefaults nsdocumentdirectory


【解决方案1】:

您不能将图像添加到用户默认值,它们不受支持。您需要将图像转换为数据并保存(保存到用户默认值,或者更好地保存到文件中的磁盘...

imageArray.insert(UIImageJPEGRepresentation(img, 0.75), atIndex: self.imgIndex)

【讨论】:

  • 谢谢,但请您在我的项目中检查一下。因为它没有按顺序附加。我收到此错误image downloaded image downloaded Image append with data fatal error: Array index out of range
  • 这是一个不同的问题,因为图像以不同的速度下载,所以它们不是按顺序排列的......
  • 我知道,但是如何在一张一张下载图片时按顺序追加?
  • 你可能不应该,你应该使用一个唯一的标识方案并为 id 查找图像(并且该 id 应该用作磁盘上图像的文件名,而不是用户默认值。 ..)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-20
  • 2013-07-16
  • 1970-01-01
  • 2013-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多