2012-05-10 6 views
2

私はCartという名前のビューを持っています。テーブルItemを表示します。これらのItemは持続する必要があるので、ItemサブクラスNSManagedObject; id,priceなどの値は、アクセサーがであるプロパティであるため、自動的に生成されます。NSManagedObjectサブクラスのカスタムアクセサを書き込む方法は?

Favoritesという別のビューがあります。 Itemのテーブルを表示しますが、保持する必要はありません。実際、このビューはユーザーが異なる資格情報でログインするたびに変更されます。

2つのビューの間の接続は、ユーザーが自分のお気に入りからカートにアイテムを追加できることです。カートには異なるFavoritesリストのItemが格納されます。 Favoritesリストは、アイテムがカートに追加されたときに変更されません。

最初に、FavoritesビューのモデルをNSDictionaryオブジェクトのNSArrayにしました。ユーザーが自分のカートにアイテムを追加すると、NSDictionaryのキーと値のペアからCore Dataに項目を作成して保存します。この方法は、きれいに見えず、非常に乾燥していません。 FavoritesビューのモデルをNSArrayのItemにするのは意味がありませんか?

したがって、Itemクラスを実装して、コアデータモデル(NSManagedObject)を表すようにしますが、Favoritesビューも使用できます。 Objective-CやiOSの開発を初めて経験したので、私は実際にこれがどのように動作するか、あるいはどのように見えるか分かりません。それは私のために魔法のように作成されたアクセサをオーバーライドする必要があるようだが、私はsuper呼び出しを使用してコンパイル時にそれらを呼び出すことはできません...誰でも私にNSDictionaryデータまたはコアデータのデータ?それがCore Dataデータの場合、魔法のように生成されたアクセサが持つ効率と同じレベルをどのように維持しますか?

さらに優れた実装方法はDRYと同じか、それとも理にかなっていますか?または、あまりにも多くの機能を1つのクラスに結合しようとしていますか?この場合、NSDictionaryオブジェクトのNSArrayが最良の方法ですか?

答えて

1

フェッチ要求(オブジェクト、オブジェクトID、カウント、ディクショナリ)に結果タイプを指定できます。

また、私はMOCの外でNSManagedObjectsを使用しません。あなたはメモリのために使う別のオブジェクトを持っているか、それらのオブジェクトのためにメモリ内の永続ストアを使うことができます。あるいは、あなたが使用する主データベースMOCの子として独立したMOCを作成することができますあなたのメモリ内オブジェクトのために。

これらのアプローチの利点は、コードがディスクにバックアップされているかどうかをコードで知る必要がないことです。

MOCを保存しない限り、これらのオブジェクトの変更は決してディスクに保存されません。

EDIT今

NSFetchRequest *fetchRequest = // create the fetch request... 
fetchRequest.resultType = NSDictionaryResultType; 

、あなたが代わりにNSManagedObjectの配列を取り戻すのあなたはNSDictionaryの配列を取り戻すだろう、フェッチします。

+0

最初の文章で何を意味するのか、少し具体的になりますか?私はまだObjective-CとiOSに慣れているので、これらのさまざまな関数プロトタイプはどのように見えますか?ありがとう! – user5243421

+0

@JodyHagins +1あなたの答え –

関連する問題