文件路径保存到CoreData但NSData仅在第一次调用时有效

时间:2016-06-15 10:07:35

标签: ios swift uitableview core-data nsdata

我从互联网下载图片并在本地存储数据然后以这种方式保存我的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错误。)

在下一个视图中,我使用了UITableViewcellForRowAtIndexPath

    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。在更新代码之前,我无法找到原因。任何解决方案,使其每次都有效吗?

1 个答案:

答案 0 :(得分:1)

正如pbasdf在评论中所述,我存储的是整个文档目录路径,而不仅仅是文件名+扩展名。每个构建都会更改文档目录。