CoreData将NSNumbers转换为BOOL

the*_*ncs 3 core-data ios

我的CoreData模型中有一个实体,它有一个布尔字段.它作为一个存储在CoreData实体上NSNumber.我想要的是访问者使用BOOL而不是NSNumber,所以我可以使用

comment.isActive = YES;
Run Code Online (Sandbox Code Playgroud)

代替:

BOOL isCommentActive = [NSNumber numberWithBool:comment.isActive];
Run Code Online (Sandbox Code Playgroud)

我打算更改自动生成的实体类文件中的代码,但我被告知不要这样做,因为每次我提取模型时它都会覆盖.

我有一个实体的类别,我尝试编码一个访问器,将其转换BOOL为同名,但这只会导致我陷入循环.

有些人提到方法眩晕,但对我来说这听起来很神奇.我应该创建一个返回不同名称原语的访问器吗?

Mar*_*n R 12

在Xcode中创建托管对象子类时,只需选择"使用基本数据类型的标量属性"选项.这将创建该属性

@interface MyEntity : NSManagedObject
@property (nonatomic) BOOL active;
@end
Run Code Online (Sandbox Code Playgroud)

并且所有转换都是在"引擎盖下"自动完成的.它实际上更有效,因为没有NSNumber创建对象.

不幸的是,"核心数据编程指南"已经过时了,它仍然声称:

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

我所知道的唯一Apple"文档"是WWDC 2011会话视频,比较/sf/answers/986383541/.

  • 我向Apple发送了错误报告 (2认同)