【发布时间】:2017-01-19 11:12:37
【问题描述】:
【问题讨论】:
-
Int(64)- 1 为真,0 为假。 -
没有其他解决方案?仅通过 Int?
-
嗯,您可以使用任何具有两个特定值的数据类型,但 Int 是最清晰和最简单的。
-
好的,谢谢。怎么可能,没有 Bool 类型?
【问题讨论】:
Int(64) - 1 为真,0 为假。
参考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)。
希望对您有所帮助。
【讨论】:
CKRecord 没有可用的 Bool 类型。最好的选择是 Int(64)。
【讨论】: