写入文件系统允许用户在其设备上写入和检索字符串,图像等文件。
例如,我在运行模拟器时出现的应用程序中写入和检索的图像对于该应用程序包是唯一的,与我从设备中写入和检索的图像不同。
当我研究如何使用Realm编写和读取图像文件时,我被告知不要保存图像而是保存路径。图像太大而无法存储。得到它了。
但是我保存的文件路径自然会返回特定应用程序包的原生数据 - 或者返回nil。如果文件路径对于设备是唯一的,我如何编写和检索与Realm之间的图像文件/路径?我需要一个单独的图像阵列吗?
第一视图控制器
let planet = planets[indexPath.item]
cell.name.text = planet.name
cell.system.text = planet.system
let imageData = (self.getDirectoryPath() as NSString).appendingPathComponent("image")
if self.fileManager.fileExists(atPath: imageData) {
// Populates every cell with the same image
cell.earthImage.image = UIImage(contentsOfFile: imageData)
// returns nil
cell.earthImage.image = UIImage(contentsOfFile: planet.image)
}
// Retrieve directory path for image
func getDirectoryPath() -> String {
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
let documentsDirectory = paths[0]
return documentsDirectory
}
第二视图控制器
let planet = Planet()
self.realm = try! Realm(configuration: config(user: SyncUser.current!))
planet.name = self.name.text!
planet.system = self.system.text!
let imageData = (self.getDirectoryPath() as NSString).appendingPathComponent("person")
if self.fileManager.fileExists(atPath: imageData) {
self.earthImage.image = UIImage(contentsOfFile: imageData)
// Why does this not write to realm?
planet.image = imageData
}
try! self.realm.write {
self.realm.add(planet)
}
在这里,我是从secondViewController
发布的,我希望在collectionView
的{{1}}方法firstViewController
中呈现这些值。
以下是模型:
numberOfItemsInSection_:)