gpt4 book ai didi

iOS - 在内存中保存用户最喜欢的对象列表的最佳方式

转载 作者:行者123 更新时间:2023-11-29 00:26:49 26 4
gpt4 key购买 nike

我正在开发一款可以显示建筑物照片及其相关信息的应用程序。这些照片都是 jpeg,都包含在应用程序包中,与它们关联的 Building 对象具有一些属性,例如名称、地址,当然还有照片数组。当应用程序启动时,我正在从 plist 加载 Building 对象。一切都非常简单,除了当用户滚动浏览建筑物图像时,他们可以选择将他们喜欢的图像添加到收藏夹列表中以便稍后查看。

最初我打算使用核心数据保存他们喜欢的每个建筑对象,但现在我想起来这似乎有点多余,因为所有建筑对象已经从 plist 中加载了。当用户滚动浏览每个建筑物的图像时,照片必须显示该建筑物已添加到收藏夹列表中的天气指示,这意味着我必须不断将从 CoreData 获取的对象数组与数组进行比较从 plist 加载的对象,这似乎是一个内存浪费任务。

我想知道,作为 CoreData 的替代方案,我是否可以向 Building 对象添加一个唯一的 ID 属性,并将其与它们一起存储在 plist 中。然后,当用户将建筑物添加到他们的收藏夹列表时,我可以将其 UID 添加到 NSUSerDefaults 中的数组中,并以这种方式进行比较。这看起来是解决这个问题的明智方法吗?

最佳答案

NSUserDefaults 中存储这样的数据是一个非常糟糕的习惯。将用户首选项保存在 NSUserDefaults 中,而不是数据集。

更好的办法是将用户的收藏夹保存在 Documents 文件夹中的一个文件中。如果您已将“ID 属性”添加到您的 Building 对象,您可以维护一个选定 ID 的数组。该数组可以保存到磁盘并从磁盘读取:

NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [documentPaths objectAtIndex:0];
NSString *myFile = [documentsDirectory stringByAppendingPathComponent:@"myFavs"];

然后

// save the array contents to file named "myFavs"
[a writeToFile:myFile atomically:YES];

// read the saved array when you launch the app
NSArray *b = [NSArray arrayWithContentsOfFile:myFile];

当然,你会想要添加错误处理,但这比将数组填充到 NSUserDefaults 中要好得多。

关于iOS - 在内存中保存用户最喜欢的对象列表的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42771262/

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