2015-10-20 57 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