如何为记录类型创建布尔类型的字段?

Posted

技术标签:

【中文标题】如何为记录类型创建布尔类型的字段?【英文标题】:How do I create field with Bool type for Record Type? 【发布时间】:2017-01-19 11:12:37 【问题描述】:

当我尝试向记录类型添加新字段时,无法添加 Bool 类型。我该怎么做呢?

【问题讨论】:

Int(64) - 1 为真,0 为假。 没有其他解决方案?仅通过 Int? 嗯,您可以使用任何具有两个特定值的数据类型,但 Int 是最清晰和最简单的。 好的,谢谢。怎么可能,没有 Bool 类型? 【参考方案1】:

参考Creating a Database Schema by Saving RecordsApple 文档,下表包含 CloudKit 可能的字段类型:

很遗憾,没有找到 Bool 类型。我发现-逻辑上-最适合替换 Bool 的是Int(64),因为:

Int(64) 类 - 如表中所述 - 是 NSNumber,它有一个 boolValue,它返回一个 Swift Bool:

数字对象的值表示为布尔值。 0 值 总是意味着假,任何非零值都被解释为真。

有关详细信息,请查看 NSNumber 文档。

这使得在您的应用程序中将它们视为 Bool 变得容易。例如:

let myFalseNumber:NSNumber = 0.0
let myTrueNumber:NSNumber = 0.01232
let anotherTrueNumber: NSNumber = -99

print(myFalseNumber.boolValue) // false
print(myTrueNumber.boolValue) // true
print(anotherTrueNumber.boolValue) // true

虽然Int(64)Double都被视为NSNumber,但是选择Int(64)而不是Double(CloudKit类型)的原因是处理“1 if true and 0 if false”的一般性(没有任何浮点数)。如需更多信息,您可能需要查看Boolean data type - Generalities (Wikipedia)。

希望对您有所帮助。

【讨论】:

【参考方案2】:

CKRecord 没有可用的 Bool 类型。最好的选择是 Int(64)。

Source Apple Documentation

【讨论】:

以上是关于如何为记录类型创建布尔类型的字段?的主要内容,如果未能解决你的问题,请参考以下文章

mysql创建布尔字段

如何为 Pandas 系列表达式指定类型提示

Sonata Admin - 布尔字段类型,标签不显示

如何使用布尔类型获取 DataMemberAttribute

mysql有布尔类型吗?

在 CloudKit 仪表板中创建布尔字段