增量写入 plist 文件
Posted
技术标签:
【中文标题】增量写入 plist 文件【英文标题】:write plist files incrementally 【发布时间】:2011-06-22 05:53:50 【问题描述】:我有一个NSMutableArray
,我使用writeToFile: atomically:
将它写入plist 文件。数组中的元素都是属性列表对象。
然后在我的 iPhone 应用程序中,我遇到了一个案例:当NSMutableArray
需要添加一个对象并且我还想更新 plist 文件时。现在我要做的是在添加新的时调用writeToFile: atomically:
。
但是当代码>NSMutableArray的数据量很大的时候,肯定性能很差。所以我想知道如何将新添加的元素写入现有的 plist 文件。
谢谢。
PS:业务逻辑是:
当用户做一些动作时,比如发送一条新消息或添加一张新照片,我会记录用户、消息/图像数据和时间(都是属性列表对象)。动作可以在任何地方发生,我没有创建数组来始终检查动作(也不需要)。当然我是用sqilte来做的,但是我还需要一个plist文件,这样用户的朋友可以随时下载。朋友不需要用户的请求,只需下载它。所以我打算保持一个最新的 plist 文件。 这就是我需要它的全部原因。
【问题讨论】:
您是否使用过性能不佳的仪器进行测量? Plist 速度非常快,所以除非你知道它很慢,否则不要担心。 @mortenfast,我没有用仪器测量,但我感觉到了。在数组中,每个元素都是一个自定义对象,它有 8 个属性(NSString,NSDate,NSData),其中一个是从 UIImage 创建的 NSData。所以,你可以想象... 【参考方案1】:如果出现plist
文件性能不佳的阶段,并且您必须担心增量添加数据,那么您实际上必须查看Core Data
。
【讨论】:
我需要plist文件以便其他人下载。 如果plist
很大,是否需要将整个内容发送过来也很重要。你不应该为diff
服务吗?确定其他用户在当前状态下需要哪些内容并仅传递该信息。只是一个想法。我不知道你的用例,所以不能发表太多评论。
对此+1。如果数据集非常大(并且包含大量二进制内容),则 plist 不是要走的路。
如何在 plist 文件中使用 diff?
不,我不是在谈论 plist 文件上的差异。我说的是根据其他用户的需求生成核心数据的差异。但是,因为它是一个数组。您可以识别其他用户没有的数组块并基于该块生成一个 plist 并将该 plist 发送过去。以上是关于增量写入 plist 文件的主要内容,如果未能解决你的问题,请参考以下文章
将增量文件写入 S3 (MinIO) - PySpark 2.4.3