gpt4 book ai didi

iphone - 在核心数据中序列化 "int"的数组

转载 作者:行者123 更新时间:2023-11-28 20:45:59 25 4
gpt4 key购买 nike

我正在尝试为我正在开发的新应用程序设计我的数据结构,并且我正在使用核心数据(这是第一次)。

我一直在努力解决核心数据中缺少数组的问题,但我基本上已经解决了问题。

我留下的一个问题是我的一个对象类型有一个“int”数组。我可能有很多这样的整数,所以我希望它们能节省空间。我也希望能够快速访问它们。

在我的特殊情况下,我的整数数组只会对它们执行两个操作。一种是迭代它们,第二种是附加新的整数。最常见的操作(也是我需要保持最高效的操作)就是能够读取数组中的所有值。

对于存储,我认为我需要在我的对象上使用“二进制数据”属性。现在我正试图找出将“int”打包成字节数组的最佳方法。

我的应用程序将创建目前仅在 iOS 设备上使用的数据,但将来可能会在其他机器上使用,因此我想确保我的解决方案独立于架构,但同时速度最快在处理器较慢的 iOS 设备上使用,并且担心电池生命周期。

我目前正在考虑设计我的二进制数据,以便以“小端”格式存储整数。我的对象将是 NSManagedObject 的一个子类,并且它会有一个副字段(不是核心数据存储的一部分),它是一个“int *”指针,我将使用它来迭代值。

当我的对象在内存中出错时,我会初始化 c 数组。如果字节序是“小字节序”(我将使用 CFByteOrderGetCurrent() 来确定),那么我可以使用如下代码非常有效地读取整数数组:

@property (retain) NSData *data; // Core Data binary attribute
...
int *cArray = (int *) [self.data bytes];

如果字节序不是小字节序,我需要分配本地存储空间,正确解压 int 值,并使二进制属性和 c 数组保持最新变化。

我会在我的子类中添加代码来管理故障(即,在出现故障时清除 cArray,并在出现故障时正确设置它)。

所以,我认为我有一个适合我的解决方案,尽管我不太喜欢它。

如果有人能想出更好的方法来完成我正在尝试做的事情,我将不胜感激。

此外,如果有人能想到为什么 c 数组和 NSData 或核心数据之间的交互可能导致我出现问题的原因,我将不胜感激。

谢谢,罗恩

最佳答案

在 CoreData 中执行此操作的典型方法是与一个对象建立一对多关系,该对象只有一个字段来保存您的 int 值。既然你说你会有很多这样的 int 值,这很可能不是一个令人满意的解决方案。

您还需要谨慎使用 CoreData 实体上的二进制类型,因为如果您的二进制数据足够大,这通常会导致一些与性能相关的不良问题。

如果这些选项都不可行,您可能需要考虑从 CoreData 下降到较低级别的存储机制,该机制使用更传统的数据库方法,并且能够有效地对您的 int 值执行所有所需的功能。

关于iphone - 在核心数据中序列化 "int"的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6390798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com