2014-11-16 26 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") 
}