当NSData属性为nil时,域崩溃

时间:2014-11-16 04:38:56

标签: ios nsdata realm nsnull

我有一个用"图像"定义的Realm类。 NSData类型的属性。我已为"图像"设置了默认值in + defaultPropertyValues方法的NSDictionary返回值为

@"image":[NSNull null]。这表示没有设置图像值。

但是,保存Realm对象时程序崩溃并出现以下错误:

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

您能否告知Realm Object中的NSData属性是否允许nil值。如果是这样,是否有不同的方式来表示空的NSData属性。

设置非零NSData值时,该问题不存在。

提前谢谢

更新: 代码:

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

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

当uploadImage设置为nil或从NSDictionary获取默认值时发生错误。 我使用的解决方法是使用["" dataUsingEncoding:NSUTF8StringEncoding]

创建一个0字节的NSData

2 个答案:

答案 0 :(得分:3)

目前只有一种属性可以是nil / NULL,那就是RLMObject属性。可选(可空)属性具有高优先级,但目前我们推荐这两种工作方式中的任何一种:

  1. 使用NSData(例如)作为其唯一属性定义RLMObject子类。这是可以为空的。
  2. 添加一个单独的布尔属性,用于跟踪NSData是否为nil。
  3. 在这里阅读更多内容:

    How to handle null value in realm.io?

答案 1 :(得分:1)

您可以初始化NSData属性并检查长度是否为0:

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