如何为记录类型创建布尔类型的字段?
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
【讨论】:
以上是关于如何为记录类型创建布尔类型的字段?的主要内容,如果未能解决你的问题,请参考以下文章