When setting up a CoreData entity I can set its type to "Integer 16", "Integer 32" and "Integer 64" which represents Int16, Int32 and Int64 in Swift.
I need to store data that is in range of 0-65535.

是否真的有必要使用"Integer 32"(和浪费空间),或者是否有可能以某种方式使用带有核心数据的UInt16?

推荐答案

核心数据不为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代码中的无符号解释.

Swift相关问答推荐

在Swift中initt()完成后运行一个函数

JSON如何解码空对象

如何避免使用DispatchSemaphores时线程爆炸?

";async let和";async之间的差异让我们等待";

SWIFT中MAP的静态方法包装器

RealityKit(VisionOS)中的PhysicBodyComponent和DragGesture

减go 用SWIFT struct 填充的NSCountedSet

try 在小部件内部读取核心数据的SwiftUI总是返回空吗?

如何增加 NSStatusBar 图像大小?

有没有办法让文本字段以不同的 colored颜色 显示而不影响半透明背景?

如何从UIKit中的AttributeContainer获取属性并将其分配给某个变量

ForEach within List:模式的好处?

将基于MyProtocol的泛型函数的参数更改为使用存在的any MyProtocol或some MyProtocol是否会受到惩罚?

展开 List 中的 HStack 以端到端但不是从上到下,因此看起来项目之间有更宽的空间

Swift中的分段错误

更新我的 pod 导致 GoogleDataTransport Umbrella 标头出现错误

swift 3 错误:参数标签 '(_:)' 不匹配任何可用的重载

如何快速将弹出框调整为表格视图中内容的大小?

Swift performSegueWithIdentifier 不起作用

Switch 语句中的字符串:String不符合协议IntervalType