我从互联网下载图片并在本地存储数据然后以这种方式保存我的CoreData中的路径:
getDataFromUrl(url!) { (data, response, error) in
dispatch_async(dispatch_get_main_queue()) { () -> Void in
guard let data = data where error == nil else { return }
print(response?.suggestedFilename ?? "")
print("Download Finished")
let filename = self.getDocumentsDirectory().stringByAppendingPathComponent(userKey as! String + ".png")
data.writeToFile(filename, atomically: true)
user.setValue(filename, forKey: "avatar")
do {
try managedContext.save()
}
catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}
}
}
保存似乎有效(我通过打印收到的数据进行调试,复制后文件中的数据也没有managedContext
错误。)
在下一个视图中,我使用了UITableView
和cellForRowAtIndexPath
let path = authorArray.objectAtIndex(indexPath.row).objectAtIndex(0).objectForKey("avatar")! as! String
let name = authorArray.objectAtIndex(indexPath.row).objectAtIndex(0).objectForKey("name")
do {
let data = try NSData(contentsOfFile: path, options: NSDataReadingOptions())
let image = UIImage(data: data)
cell.profilePicture.image = image
cell.profilePicture.layer.cornerRadius = cell.profilePicture.layer.cornerRadius / 2;
cell.profilePicture.layer.masksToBounds = true;
}
catch {
print("failed pictures")
}
问题是我在我的cell.profilePicture
上得到了照片,但是一旦我在其他地方做了任何修改并从xCode重新启动我的应用程序,我收到错误消息。图片路径没有变化,但从中获取的数据是nil
。在更新代码之前,我无法找到原因。任何解决方案,使其每次都有效吗?
答案 0 :(得分:1)
正如pbasdf在评论中所述,我存储的是整个文档目录路径,而不仅仅是文件名+扩展名。每个构建都会更改文档目录。