gpt4 book ai didi

iphone - 在 iPhone 上存储大型可变数组

转载 作者:行者123 更新时间:2023-12-03 21:20:49 25 4
gpt4 key购买 nike

好吧,我似乎找不到 iPhone 存储这个问题的明确答案。我的模型类有几个 ivars 和两个非常大 (MB) 的可变数据数组,这些数据是从外部设备收集然后进行分析的。我的想法是,您在对象中有数据(类似于音符或音乐文件),您可以将其保存到永久数据"file",然后稍后打开旧数据"file"并查看它(不将完成旧数据的编辑)。除此之外,我想要另一个存储的对象,它跟踪每个数据文件中的一些关键信息,并且还引用它们(也许用户可以单击一个数据点,它会打开相应的数据文件 -如果它仍然存在(用户可以将其删除以节省空间)。

我看到大量建议建议 iPhone 应用程序的所有数据存储都应使用 Core Data。问题是,除了一侧的"file"之外,对象之间没有任何关系。这些对象可以被认为是音符或音乐文件,它们不关心彼此的存在,并且一次只有一个对象存在(“加载”)(要么在内存中,要么向其中添加数据,并稍后保存,或从正在查看的存储中加载)。

管理这个问题的最佳方法是什么?目前,设备 Controller (处理设备通信)创建模型,并向其发送数据(模型解析和分析数据)。但是是否应该有一些 Controller 来处理创建对象的文件(或核心数据托管对象,等等),并保存其数据,释放其内存,然后加载一个包含存储数据的新对象?

任何建议都会有帮助,因为我发现的最好的存储示例似乎非常相关(员工,老板,公司) - 我可以看到这将从数据库中受益。但与此同时,手动保存目录中的文件列表可能比其他方法更费力。

最佳答案

我在 Apple 的文档中找不到引用,但我读过(并且 Apple 工程师告诉我)“大型”数据对象有时最好存储在 Core Data 之外。建议的模型将 BLOB(二进制大型对象)放置在文件系统中,核心数据对象引用这些大型对象(即存储相对或绝对文件路径)。

因此,假设您的 BLOB 是音乐数据,那么您的核心数据模型可能有一个保存元数据(例如大小、时间/持续时间等)的实体以及对保存实际数据的文件的引用数据。您的元数据实体还可以与系统内的其他实体有关系。例如,您可以存储音乐数据的频谱图并将其由单独的实体保存。

对于从各种测量传感器采样的数据,我一直在努力解决这个问题。最终,我决定我的数据集足够小(在大多数情况下),可以将核心数据存储为专用实体的 NSData 属性。包装实体是“专用的”,以避免加载数据只是为了向用户显示元数据。

更新

我在《核心数据编程指南》的“大数据对象 (BLOB)”部分末尾找到了有关 BLOB 的内容:

It is better, however, if you are able to store BLOBs as resources on the filesystem, and to maintain links (such as URLs or paths) to those resources. You can then load a BLOB as and when necessary.

关于iphone - 在 iPhone 上存储大型可变数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5020644/

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