Ios 决定使用核心数据或默认值

Ios 决定使用核心数据或默认值,ios,objective-c,core-data,nsuserdefaults,Ios,Objective C,Core Data,Nsuserdefaults,我的应用程序上有一个功能,允许用户邀请他们的朋友(通过facebook或他们通讯簿中的朋友)。大多数人将拥有

我的应用程序上有一个功能,允许用户邀请他们的朋友(通过facebook或他们通讯簿中的朋友)。大多数人将拥有<5K的朋友,而有些人拥有更多的朋友(可能最多有10000个朋友?)

我想跟踪他们邀请的朋友,这样他们就不会再邀请他们了。为了实现这一点,我在
NSUserDefaults
中保存了一份好友记录以存储此信息。我想知道
NSUserDefaults
是否足以满足此要求,或者我是否需要使用
核心数据


此外,我还计划添加一项功能,允许他们邀请朋友参加特定活动。(我们的应用程序上有很多活动。)如果我想跟踪哪些朋友被邀请参加了哪些活动,那么我应该使用
核心数据吗?
NSUserDefaults
是否足够?(我想不会的)。最后一点,核心数据应该用在这方面还是应该保存在服务器端?

你打算在字典中保存什么?如果只是字符串,那么就可以了,但是如果您计划存储图像,我建议您使用核心数据。

NSUserDefaults
实际上是用于存储设置、首选项和单个值等小块数据


您应该使用核心数据来存储大量元素列表。就您的最后一个问题而言,没有什么可以阻止您同时使用核心数据和后端来存储数据。事实上,有一些框架正是为了促进这一点。看看。

你的假设是正确的
NSUserDefaults
不足以可靠地存储和查询大量数据。如果你有一个后端(服务器上的数据库)来存储事件,并让受邀者保持用户信息的一致性(如果用户从其他应用程序支持设备重新登录到你的应用程序,那么他将获得他存储的所有信息),这是可以建议的。还可以在数据库中创建表,以便轻松查询所需信息。例如,对于每个事件,都有一些字段存储/更新其信息。当您想知道您的单个查询应该附带所有需要的结果时。这将使应用程序对运行速度相当快的用户产生非常好的效果。

将词典存档到docs文件夹。核心数据在更新(迁移)时会很小心。还有一个错误,每次我添加一个字段时,我都必须通过工具重新生成标题,我不能只更新标题而不失败。我问题的第一部分呢。我可以使用NSUserDefaults吗?你可以,但取决于这个结构可能会有多大,你可能也希望使用核心数据。为什么不建议使用呢?在NSUserDefaults中存储大量数据是否会对性能产生影响?@马克:没错。UserDefaults存储在plist中,当您想要写入或访问它时,plist会完整地保存和加载。如果你在里面放了很多数据,比如一个巨大的列表,它就会变得效率低下。不过,我不确定您需要多少数据才能开始遇到性能问题。我建议您使用文件系统处理图像。