如何在Realm数据库swift中以UImage的形式写入和读取数据

时间:2017-04-16 09:19:06

标签: swift realm

我需要一个编辑器应用程序,我想以图像,音频和视频的形式在realm对象中存储数据,因为我是realm和swift.where的新手我能够写入数据但是如何读取对象数组的形式。

1 个答案:

答案 0 :(得分:1)

Realm的一般最佳实践是尽量避免将大型二进制blob保存到Realm;特别是如果它们可以简单地保存在Realm文件旁边的硬盘上。如果您需要领域Object来表示文件,则可以将文件路径存储在Realm中作为String属性的文件。

如果您仍然需要将UIImage写入Realm对象,则必须先将其转换为NSData,以便将其保存到磁盘。这通常意味着将其转换为JPEG或PNG。

// Write a UIImage as a PNG to Realm
let myImage: UIImage = ...
let myImageData = UIImagePNGRepresentation(myImage) as NSData?

if let myImageData = myImageData {
   // A Realm `Object` with an `NSData` 
   let myObject = MyObject() property

   myObject.imageData = myImageData

   let realm = try! Realm()
   try! realm.write {
      realm.add(myObject)
   }
}

// Get a UIImage from Realm
let realm = try! Realm()
let myObject = realm.objects(MyObject.self).first!
let myImage = UIImage(data: myObject.imageData)