为啥 Xcode 会为我的模型类的布尔属性生成 NSNumber 属性?

Posted

技术标签:

【中文标题】为啥 Xcode 会为我的模型类的布尔属性生成 NSNumber 属性?【英文标题】:Why did Xcode generate an NSNumber property for my model class's boolean attribute?为什么 Xcode 会为我的模型类的布尔属性生成 NSNumber 属性? 【发布时间】:2014-11-17 20:20:55 【问题描述】:

我使用 Xcode 创建了一个项目,并在 .model 文件中创建了一个新实体。我向这个实体添加了一个名为“当前”的布尔类型的属性

然后我点击Editor>Create NSManagedObject subclass,在创建的文件中,“current”属性的类型是NSNumber...这是为什么呢?

@property (nonatomic, retain) NSNumber * current;

【问题讨论】:

仅供参考。在导出子类时,您可以通过选择“对原始数据类型使用标量属性”来更改该行为。 【参考方案1】:

这是默认设置。如果你想要标量,当它询问你创建文件的文件夹时,你需要点击“使用原始数据类型的标量属性”复选框。

【讨论】:

【参考方案2】:

它是一个存储0或1的数字对象。

SQLite 没有单独的布尔存储类。相反,布尔值存储为整数 0(假)和 1(真),这就是核心数据使用数值的原因。

NSNumber 是 NSValue 的子类,它提供任何 C 标量(数字)类型的值。它定义了一组专门用于将值设置和访问为有符号或无符号 char、short int、int、long int、long long int、float 或 double 或作为 BOOL 的方法。 (请注意,number 对象不一定保留创建它们的类型。)它还定义了一个 compare: 方法来确定两个 NSNumber 对象的顺序。

【讨论】:

以上是关于为啥 Xcode 会为我的模型类的布尔属性生成 NSNumber 属性?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的显式构造函数会为我的转换运算符创建这种歧义?

为啥当我单击一个链接时,它会为我的所有链接执行该功能? (Javascipt)

为啥我的 Swift 类的扩展在定义文件之外不可见?

为啥 Xcode 会为选择器添加自动完成方法?

为啥 stoi/atoi 会为我提供编译器错误?

为啥自动导入会为 PhpStorm/WebStorm 中的根节点模块生成相对路径