2015-10-20 58 views
4

我想了一个域对象(事件)保存到境界数据库,但是当我尝试它崩溃指出:RLMException - “二进制太大”

Terminating app due to uncaught exception 'RLMException', reason: 'Binary too big' 
*** First throw call stack: 
(0x185c08f5c 0x19a70ff80 0x1004d0d40 0x1004cf850 0x1004fc718 0x1004d1514 0x1004cfc0c 0x1004fc718 0x100960634 0x100047584 0x100962888 0x1005b9244 0x100960100 0x100043750 0x1000438cc 0x18b1963c8 0x18b196344 0x18b17ec6c 0x18b195c5c 0x18b150bdc 0x18b18f548 0x18b18eaac 0x18b15fa10 0x18b15defc 0x185bc05a4 0x185bc0038 0x185bbdd38 0x185aecdc0 0x190c40088 0x18b1c6f44 0x10003cee8 0x19af3a8b8) 
libc++abi.dylib: terminating with uncaught exception of type NSException 
(lldb) 

我尝试将其保存这样:

try! realm.write{ 
       self.realm.add(self.theEvent) 
      } 

我的活动物体看起来沿着这些路线的东西:

class Event: Object { 
dynamic var title: String = "" 
dynamic var image: NSData = NSData() 
let items = List<Item>() 
} 

凡一个项目基本上是另一个objec t存储一张照片。

我很困惑,为什么试图保存2张照片(列表中的1个项目加上事件的图像)导致声称超过16MB的领域。

谢谢!

回答

6

根据您的序列化图像数据的方式(例如,如果它是一个无损位图),这个数据很有可能超过16MB,正如您所说的,它是Realm针对二进制属性支持的最大大小。

当你调用NSData.length时,它说你的数据有多大?

+0

哇! 18752502字节...因此除以1024两次得到17.884 MB。如何将一张照片压缩成UIImagePNGRepresentation这么大?比照片本身大得多?其次,我想确认一个领域对象可以大于16MB,只有一个单独的NSData字段不能超过16 MB阈值?非常感谢你,对于你们所有人的帮助:) – alex1511

+0

是的,Realm对象本身可以是任意大小的(只要资源可用),但是单个NSData属性不能超过16MB。 – jpsim