0

リスト保存アプリケーションのデータ管理方法についてアドバイスを求めています。基本的に、2 つのオブジェクト タイプがあります: ListListItem。オブジェクトは次の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;

A 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 への移行を少し楽にするためのツールがいくつかあります。具体的にはmogeneratorMagical Recordです。

必要な Core Data モデルは非常に基本的なものであり、ListItem と List の間に多対 1 の関係を設定することは、実行しているように見えることに最適です。

幸運を!

于 2013-07-18T21:36:10.083 に答える
1

間違いなくコアデータに行きます。これにより、はるかに堅牢でスケーラブルなアプリになることがわかります。

最も重要な欠点は、非常に非効率的なリスト全体しか保存できないことです。最終的にはメモリ不足になります。Core Data を使用すると、増分更新を行うことができます。

第 2 に、NSUserDefaults インフラストラクチャは型に関してあまり柔軟ではなく、実際には別のものを対象としていました。設定を保存しているのではなく、データを保存しています。

第 3 に、既に指摘したように、並べ替えとフィルター処理はリソースに負担をかけ、多くのコーディングが必要になります。かなり効率的にメモリ内で並べ替えとフィルター処理を行うことができますが、保守しやすいコードにはなりません。

于 2013-07-18T21:35:14.923 に答える