Core Data 中二进制或是/否变量的变量类型约定

Posted

技术标签:

【中文标题】Core Data 中二进制或是/否变量的变量类型约定【英文标题】:Variable Type convention for binary or yes/no variables in Core Data 【发布时间】:2015-03-28 11:43:37 【问题描述】:

ios新手有php后台学习核心资料在这里。

什么变量类型是二进制的最佳实践,即核心数据中的 Yes/No 或 True/False 值?

在 PHP 中,约定是使用 tinyint 或 0,1。核心数据似乎有一个布尔原语,但你也可以使用 NSNumber、int 等。

我目前在 .xcdatamodel 文件中使用 Boolean 作为变量类型,但在从开关中捕获二进制变量时遇到了很多问题,尝试进行 if else 比较等等,所以想以正确的方式进行.谢谢。

【问题讨论】:

【参考方案1】:

CoreData 的 BOOL 类型不是“真正的”布尔值,因为布尔值不是对象。您应该将它们存储为 NSNumber 并将它们转换为布尔值。

设置:

[entity setBinary:[NSNumber numberWithBool:YES]];

得到:

BOOL isBinaryOn = [[entity binary] boolValue];

我希望这会有所帮助!

【讨论】:

所以在 xcdatamodel 文件中我应该将类型设为 NSNumber?在上面的示例中,我看到了实体,但属性名称在哪里?这也适用于键值编码,例如 [record setValue:pub forKey:@"pub"];如果 pub 是 NSNumber 类型的属性,值为 1 或 0?最后,在进行比较时,我可以再次说 if(self.entity.pub==1) where pub is attribute 吗? "binary" 是属性名称。键值编码应该以相同的方式工作。在最后一个问题上,是的,它会起作用,或者您可以将 self.entity.pub 属性转换为布尔值并在 if 语句中使用它。

以上是关于Core Data 中二进制或是/否变量的变量类型约定的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Core Data 上下文对象必须通过环境变量传递?

linux常用命令

.NET Core Web API使用HttpClient提交文件的二进制流(multipart/form-data内容类型)

@JsonSerialize

126 - 处决 06

c++中函数中变量内存分配以及返回指针引用类型的思考