一尘不染

将图像存储到CoreData-Swift

swift

在我的代码中,我设法用CoreData保存了textLabel,但似乎无法正确保存图像。我已经阅读了一些教程,并且知道必须将其转换为NSData。但是我该怎么做呢?

提前致谢!


阅读 415

收藏
2020-07-07

共1个答案

一尘不染

核心数据并不是要保存图像等大的二进制文件。而是在文件系统中使用文档目录。

这是实现此目的的示例代码。

let documentsDirectory = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first as! String
// self.fileName is whatever the filename that you need to append to base directory here.
let path = documentsDirectory.stringByAppendingPathComponent(self.fileName)
let success = data.writeToFile(path, atomically: true)
if !success { // handle error }

建议将filename零件以及与该图像关联的其他元数据保存到核心数据中,并在每次需要时从文件系统中检索。

编辑:还请注意,从ios8开始,由于动态生成沙盒化的app-
id,因此保留完整文件url无效。您将需要documentsDirectory根据需要动态获取。

2020-07-07