0

我有一个NSNumber我想是可选的,没有默认值,没有一些代表“缺失”的幻数(例如 0 或 -1)。IE。在数据库上,我希望它的值为数字或空值。它从 null 开始没问题,但是一旦它得到一个数字,我怎样才能将它重置回“缺失”?

我试过了:

  1. myAttribute = nil;
  2. myAttribute = [NSNull null];
  3. [self setValue:[NSNull null] forKey:@"myAttribute"];
  4. [self setPrimitiveValue:[NSNull null] forKey:@"myAttribute"];

第一个不会崩溃,但我理解将核心数据属性设置为 nil 实际上是说它没有被获取。因此它不会更新。其他三个崩溃。

很多建议都建议NSNumber应该始终包含一个数字,所以我不希望这是答案。为了克服这个问题,假设我将数据存储在NSString. 如何获取核心数据以存储NULL在数据库中而不是空字符串?

4

1 回答 1

0

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

self.myAttribute = nil;
[self setValue:nil forKey:@"myAttribute"];

两者都有效。您的电话 2、3、4 失败,因为NSNull不是数字。

于 2013-02-27T09:54:04.480 回答