0

我正在寻找一些关于如何管理列表保存应用程序数据的建议。本质上,我有两种对象类型:List, ListItem. 一个List对象看起来像这样:

@interface List : NSObject

@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSMutableArray *contents;
@property (nonatomic, copy) NSString *completed;
@property (nonatomic, strong) NSDate *creationDate;


-(id)initWithName:(NSString *)name contents:(NSMutableArray *)contents completed:(NSString *)completed date:(NSDate *)creationDate;

ListItem

@interface ListItem : NSObject

@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *completed;
@property (nonatomic, strong) NSDate *creationDate;

-(id)initWithName:(NSString *)name completed:(NSString *)completed date:(NSDate *)date;

@end

目前,我将这些列表保存在一个数组中NSUserDefaults,但是我设想执行诸如“按创建日期、类型或名称对列表进行排序”之类的操作,我觉得我会遇到困难。所以,在继续自己编写这些方法之前,我想向大家提出一些问题:学习如何使用 Core Data 对我来说有意义吗?它真的会为我提供更好的功能/更可靠的数据持久化方式吗?

提前感谢您的建议。

4

2 回答 2

2

如果您的应用程序的主要重点是存储基于这些对象的列表,我会说可能值得研究 Core Data。它将允许您更轻松地根据标准获取多个列表(如果您决定稍后执行类似的操作),并且让您对存储数据的操作进行总体控制。

有一些工具可以帮助减少向 Core Data 的过渡,即mogeneratorMagical Record

您需要的核心数据模型非常基本,在 ListItem 和 List 之间建立多对一的关系对于您正在做的事情来说是完美的。

祝你好运!

于 2013-07-18T21:36:10.083 回答
1

绝对去 Core Data。您将看到这将产生一个更加健壮和可扩展的应用程序。

最重要的缺点是您只能保存整个列表,这是非常低效的。最终你会耗尽内存。使用 Core Data,您可以进行增量更新。

其次,NSUserDefaults 基础结构在类型方面不是很灵活,并且实际上是为了不同的东西。您存储的不是首选项,而是数据。

第三,正如您已经指出的那样,排序和过滤既会占用资源,又需要大量编码。您可以非常有效地在内存中进行排序和过滤,但这不会产生非常可维护的代码。

于 2013-07-18T21:35:14.923 回答