2011-10-11 3 views
5

私は、私の学校にいる人のためのコース時間割を作成するアプリケーションを作っています。これは、私がアプリケーションのために覚えていた荒いデザインです:NSDocumentとCoreDataは可能な組み合わせですか、またはNSPersistentDocumentだけですか?

私は自分のNSDocumentサブクラスが個人のタイムテーブルを表現したいと思います。アイデアは、彼らが文書を開き、プールのスケジュールを自分のタイムテーブルに追加し、保存したり、共有したり、開いたりすることができるということです。そのため、タイムテーブルはユーザーが選択した外部ファイルに保存されます。

CoreDataを使用して、学生が選択できるすべてのコースを保存したいと考えています。これらは、タイムテーブルの作成と編集で変更されるのではなく、コース情報の更新をチェックするときに、アプリケーションの起動時にのみ可能性があります。

これは私のアプリを構造化するための論理的な方法です。問題は、NSDocumentベースのアプリケーションを作成し、use CoreDataボックスをチェックすると、CoreData機能を持つNSDocumentベースのアプリケーションではなく、NSPersistentDocumentベースのアプリケーションになります。

私はこれが私が望む動作ではないと思います。 CoreDataを使用する方法はありますか?まだNSDocumentベースのアプリケーションがありますか?または、後でNSPersistentDocumentを使用する必要がありますか? NS * Documentビジネス全体を誤解していますか?私のアプリケーションの構造についてのアドバイスはありますか?

ありがとうございました!

+0

あなたはコアデータを使用して、学生が選択できるすべてのコースを保存したいとします。 Core Dataを使用して、個別の学生のタイムテーブルをNSDocumentクラスに保存しますか? NSPersistentDocumentを使用するかどうかを決定するのは2番目の質問だと思います。 – paulmelnikow

+0

@noa:いいえ、私は、ユーザーが選択した外部ファイルに学生のタイムテーブルを保存する予定です。 –

+0

plistやkeyedアーカイバのようなものを使用して、私はあなたが意味すると思いますか?ユーザーに別のファイルを選択させ、コアデータを使用させることができます。それがNSPersistentDocumentがあなたを助けるものです。 – paulmelnikow

答えて

2

はい、NSPersistentDocumentを使用せずにコアデータを使用できます。ただNSPersistentStoreCoordinatorNSManagedObjectContextを直接インスタンス化してください。 how do you create a NSManagedObjectContext

複数のNSDocumentインスタンス間でカタログのインスタンスを共有し、各ドキュメントとともにカタログを保持したくない場合は、これが良い方法です。あなたのアプリケーションやアプリケーションデリゲートは、コースカタログの読み込みを処理することができ、ドキュメントは個々の生徒のタイムテーブルを読み込んで保存することができます。あなたは、鍵を付けられたアーカイバを使って、言い換えるか、plistを自分で書くことによって、あなた自身で実装する必要があります。

代わりに、Core Dataをさらに活用することができます。生徒のスケジュールをNSManagedObject秒で表し、NSPersistentDocumentがコンテキストの読み込みと保存を処理するようにします。あなたは、取り消しややり直しのような多くの便利な機能を無料で利用できます。

+0

ああ、ありがとうございます!私は私の元の質問に十分な説明を入れなかったと思う。ありがとう! –

関連する問題