2014-11-16 30 views
1

我有一個Realm類,用類型爲NSData的「image」屬性定義。我在+ defaultPropertyValues方法的NSDictionary返回值中設置了「image」的默認值爲當NSData屬性爲零時,領域崩潰

@"image":[NSNull null]。這表示沒有設置圖像值。

[NSNull UTF8String]: unrecognized selector sent to instance 0x10abe9ce0 

你能否告知,如果零值不允許在領域對象NSData的屬性:

然而,在保存領域對象時,出現以下錯誤程序崩潰。如果是這樣,是否有不同的方式來表示空的NSData屬性。

當設置非零NSData值時,問題不存在。

預先感謝您

UPDATE: 代碼:當uploadImage設爲零發生或NSDictionary中取默認值

Item.h 
@interface UploadImage : RLMObject 
    @property uploadImage:NSData 
@end 

Item.m 
+ (NSDictionary *)defaultPropertyValues 
{ 
    return @{@"uploadImage":[NSNull null]...}; 
} 

錯誤。 我使用的解決方法是使用["" dataUsingEncoding:NSUTF8StringEncoding]

+0

張貼一些代碼。無法從您的描述中分辨出來。 – Aggressor

+0

在更新中添加了代碼 – everestman

回答

3

創建一個0字節的NSData目前只有一種屬性可以爲零/ NULL,這就是RLMObject屬性。可選(可爲空)的屬性是什麼,具有高優先級,但目前,我們建議這兩種workaraounds的:

  1. 定義的RLMObject子與NSData的(例如)作爲其唯一的財產。這是可以空的。
  2. 添加一個單獨的布爾屬性,用於跟蹤NSData是否爲零。

在這裏閱讀更多:

How to handle null value in realm.io?

1

可以初始化NSData的財產,並檢查長度爲0:

let data = NSData() 
if data.length == 0 { 
    println("handle like nil value") 
} else { 
    println("Do what you want") 
}