8

Cocoa の仕組みを理解しようとしていますが、1 つのことに苦労しています。http://cocoawithlove.com/2010/09/minimalist-cocoa-programming.htmlhttp://casperbhansen.wordpress.com/2010/08/15/dev-tip-nibless-development/を見ました。なんとなくわかった。

今、同じことをしたいと思いますが、「ドキュメントベースのアプリケーション」の場合です。上記のものに似たチュートリアルまたは例を知っている人はいますか? または、それを機能させるために何をする必要がありますか? 作成する必要があると思いますNSDocumentControllerが、NSApplication とどのように関連していますか? そして、私NSDocumentはそこから作成しますか?率直に言って、私は少し迷っています...

4

1 に答える 1

10

半年前の私です!適切なチュートリアルも見つかりませんでしたが、デフォルトの Xcode プロジェクト テンプレートを使用して新しいプロジェクトを開始しました。

ここに画像の説明を入力

新しいプロジェクトを開始するときに Xcode が生成するセットアップから始め、作業を進めながら少しずつ実装しました。さまざまなコントローラー クラスの使用について、Stackoverflow でいくつかの良い読み物がありますが、ここで私がしたことは次のとおりです。

  • Xcode によって生成されたドキュメント クラスは、私の最上位のコントローラーです。NSDocumentController は使用しません。
  • 私のアプリの各ユースケースには、ユースケースのさまざまなビューを管理する多数の NSViewControllers があります。これらのコントローラーは、動的にスワップインおよびスワップアウトされます。最上位のコントローラーは NSDocument クラス (私の場合は Core Data を使用するので NSPersistentDocument) によって管理されます。

私は決して専門家ではないので、より良いアプローチを修正する必要がありますが、これまでのところ、このセットアップは扱いやすく、維持しやすく、拡張しやすいものでした。

注: Core Data の使用はオプションですが、時間が経つにつれて気に入るようになり、非常に強力で時間を大幅に節約できると思います。Core Data を使用しない場合でも、上記の設定は機能しますが、独自のデータを管理する必要があります。

編集: この投稿では、NSDocumentController の関連性について説明します。

EDIT2: Appleからのこれも興味深い読み物です。

EDIT3:アプリのUIが含まれているため、NIB(または現在呼び出されているXIB)が必要です。ビューコントローラー(サブクラスNSViewController)を介してそれらを取り込みます:

NSString *aControllerName = [anIdentifier stringByAppendingString: @"ViewController"];
NSString *aNibName = [anIdentifier stringByAppendingString: @"View"];
Class aControllerClass = NSClassFromString(aControllerName);
[self setCurrentController: [[aControllerClass alloc] initWithNibName: aNibName bundle: [NSBundle mainBundle]]];

anIdentifierDepartmentインスタンス化し、 XIBDepartmentViewController名をロードしますDeparmentView

plist を使用してデータを保存できますが、必須ではありません。アプリのデータを保存するには、さまざまな方法があります。Apple が導入しているさまざまなアーキテクチャについて読んで、自分で選択する必要があります。

于 2012-04-29T22:03:07.037 に答える