核心数据不为UInt16这样的无符号整数提供特定的数据类型.但是,通过调整SWIFT代码中存储的值的解释,您仍然可以使用整数16表示0-65535范围内的值.
以下是您可以做的:
Store as Integer 16:个
在Core数据模型中使用Integer 16类型,它表示一个带符号的16位整数.
Adjust in Swift Code:个
在您的SWIFT代码中,将获取的值视为无符号的.例如,如果您从Core Data获取整数16值,则可以在您的SWIFT代码中将其转换为UInt16.
let coreDataValue: Int16 = // Fetched from Core Data
let unsignedValue = UInt16(bitPattern: coreDataValue)
这实质上是将有符号整数的位解释为无符号整数.因为你知道你的值在0-65535的范围内,所以这个转换应该没有任何问题.
Validation:个
确保在存储值时,它们在0-65535的有效范围内.在将数据保存到核心数据之前,您可以在应用程序逻辑中强制执行此约束.
如果您知道您的值始终在无符号16位整数的范围内,那么使用Integer 32确实是浪费空间.上述方法允许您在核心数据模型中使用更节省空间的Integer 16类型,同时处理SWIFT代码中的无符号解释.