如何清除可选属性的数据?

时间:2013-02-27 08:39:46

标签: objective-c core-data nsnumber

我有一个NSNumber,我希望它是可选的,没有默认值,没有一些代表'缺失'的幻数(例如.0或-1)。即。在数据库上我希望它的值是一个数字或null。它从null开始没问题,但是一旦得到一个数字,我怎么能把它重新设置为'missing'?

我试过了:

  1. myAttribute = nil;
  2. myAttribute = [NSNull null];
  3. [self setValue:[NSNull null] forKey:@"myAttribute"];
  4. [self setPrimitiveValue:[NSNull null] forKey:@"myAttribute"];
  5. 第一个没有崩溃,但我知道将核心数据属性设置为nil实际上是说它尚未被提取。因此它不会更新。其他三人崩溃了。

    很多建议都表明NSNumber应该总是包含一个数字,所以我并不认为这是答案。为了解决这个问题,请假装我将数据存储在NSString中。如何获取核心数据以在数据库上存储NULL而不是空字符串?

1 个答案:

答案 0 :(得分:0)

您可以将可选属性的值设置为nil,应该没有问题:

self.myAttribute = nil;
[self setValue:nil forKey:@"myAttribute"];
两个都工作。您的通话2,3,4失败,因为NSNull不是号码。