1

当我让 Xcode 自动为数据模型中的实体创建类文件时,我指定的任何属性Boolean都会在属性声明中获取 NSNumber 类型:

@property (nonatomic, retain) NSNumber * isGood;

由于我使用的是 ARC,不应该是strong而不是retain吗?

可能发生这种情况是因为Boolean无法转换为对象。那是对的吗?如果是这样,我如何使用应该具有布尔值的属性?

4

3 回答 3

2

是的,NSNumber被用作BOOL不是一个对象。CGFloat等等也一样NSInteger

从使用中获取BOOL价值。NSNumber[myNSNumber boolValue];

于 2011-12-18T15:07:11.603 回答
2

为核心数据模型生成类时,有一个复选框“使用原始类型的标量属性”。如果您选择它,它将为您的布尔属性使用 BOOL 类型。由于现在使用的是原始类型,因此它也不会在声明中包含任何保留(或强)关键字。

于 2011-12-18T15:04:13.833 回答
0

我已经阅读了 maxedison 和 Tim Dean 之间的转换,并且我已经仔细检查了它。事实证明,蒂姆可能是不对的。您必须实现 getter 和 setter。

根据http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdNSAttributes.html#//apple_ref/doc/uid/TP40001919-SW13

您可以将属性声明为标量值,但对于标量值,Core Data 不能动态生成访问器方法——您必须提供自己的实现

以及利弊(在同一个文件中):

允许 Core Data 管理自己的存储的优势通常超过直接与标量值交互的任何优势,尽管如果您怀疑这不适用于您的应用程序,您应该使用性能分析工具进行检查。

于 2012-09-19T09:59:29.507 回答