核心数据检查是否从未设置过属性

时间:2014-10-28 12:43:26

标签: core-data nsmanagedobject nsmanagedobjectcontext setter

有没有办法检查是否已在setter中设置了NSManagedObject属性,例如浮点NSNumber,其默认值为0?

我试过这样的事情:

-(void)setQuantity:(NSNumber *)quantity {

if (self.quantity==nil)
   NSLog(@"Property never been set");
else
   NSLog(@"Property already set");

[self willChangeValueForKey:@"quantity"];    
[self setPrimitiveQuantity: quantity];    
[self didChangeValueForKey:@"quantita"];

}

但“数量”永远不会为零,因为使用默认值初始化。谢谢!

1 个答案:

答案 0 :(得分:1)

如果属性具有默认值,则在初始化期间已设置 。您有两个选择:

  1. 将该属性标记为可选,并且不提供默认值。你可以检查零。
  2. 确保默认值是唯一的,并检查该值以确定自初始化后是否已更改。例如,对于其他正数,使用-1
  3. 警告1:确保代码中的某个属性再次设置为nil 警告2:确保在您的代码中没有将属性设置为唯一值。