Core Data生成一个NSManagedObject子类,其属性类型为NSNumber,但它是一个Bool

时间:2016-05-09 11:19:59

标签: swift core-data

我刚刚创建了一个核心数据数据模型并添加了一些实体。现在我正在生成NSManagedObject子类。

在生成的代码中,我发现我的一个属性(数据模型中的类型为“Boolean”)已变为NSNumber类型的属性!

这不正确,我想。 NSNumber肯定不是布尔值。为什么不只使用Bool类型?

然后我认为这可能是Objective-C令人讨厌的事情中的另一个。我认为就像IntDouble一样,Bool无法保存到Core Data中,因此必须使用NSNumber。我是对的吗?

如何将此NSNumber转换为Bool以及如何将Bool转换为NSNumber?也许0 =假,1 =真?其他价值怎么样?这根本不是类型安全的......

1 个答案:

答案 0 :(得分:1)

对于您的问题$path,您可以执行以下操作,适用于How to convert this NSNumber to a Bool and how to convert a Bool to an NSNumber?个对象

NSNumber

并且您可以转换为其他类型,有关详细信息,请查看类引用hear

抱歉延迟, swift version

//convert bool to number 
NSNumber *boolInNumber = [NSNumber numberWithBool:YES]; //or NO

//get back, convert number to bool 
NSNumber *aNum = [NSNumber numberWithBool:YES]; //get the NSNumber instance
BOOL numberInBool = [aNum boolValue];

是的,你是对的...... :)根据@fred doc说,

  var numInBool:NSNumber? //is a nsnumber instance
  numInBool = NSNumber(bool: true) //get number from bool (number in bool)

  var boolInNum:Bool? //it is boolean
  boolInNum = numInBool!.boolValue  //get bool from number (bool from number)