問題タブ [nspersistentdocument]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
392 参照

objective-c - 永続ストアの作成時に NSPersistentDocument がクラッシュする

最近、Core Data モデルに新しいエンティティを追加したので、モデルの新しいバージョンとそのマッピング モデルを作成しました。しかし、私の NSPersistentDocument は明確な理由もなくクラッシュします:

コンソール ログ:

*** -[NSCFArray insertObject:atIndex:]: nil を挿入しようとしています

これが役立つ場合のスタックトレースは次のとおりです。 スタックトレース

マッピング モデルを削除しても解決しないので、ドキュメントが間違ったデータ モデルを読み込もうとしたためだと思いますが、特定のデータ モデルを使用する必要があると言う方法が見つかりませんでした。

編集: iOS 用に独自の Core Data 抽象化クラスを使用すると、すべて問題ありません。だから諸悪の根源はNSPersistentDocument. 実際、私は NSDocument に戻りたくないし、Core Data 処理を自分で再度実装する必要はありません。

0 投票する
1 に答える
610 参照

xcode4 - XIB ビューで Xcode4 の NSPersistentDocument サブクラスで NSArrayController を moc にバインドする

スーパークラスの [self managedObjectContext] を持つ NSPersistentDocument のサブクラスがあります。

xib で NSArrayController のバインディングを設定しようとしています。パラメータの Moc を設定すると、バインド先の選択肢は次のとおりです。ファイルの所有者、アプリ、および設定。(NSArrayController のエンティティは、私のコンテキストではエンティティ名に設定されています)

モデル KeyPath のデフォルトは自分自身です。次に、テーブル列の値を NSArrayController にバインドします (Xcode 4 で名前を変更する方法がわかりません)。arrangedObjects.(エンティティ プロパティの名前)

UI には、コンテキストを自己設定するための設定ボタンがあります。

走るとき。UI が表示されず、コンソールに表示される内容がすべて繰り返されます: -[MyDoc persistentStoreCoordinator]: unrecognized selector sent to instance 0x10015adf0

提案?

0 投票する
1 に答える
392 参照

core-data - NSPersistentDocument 内に新しい NSManagedObject を作成すると、元に戻すことが可能な場合でも保存が拒否されます

私は CoreData / NSPersistentDoc アプリを持っています。それは正常に動作します。

MOM に新しいエンティティを追加し、バージョンを更新しました。

ここで、MOC 内にそのエンティティの新しいインスタンスを作成すると、アプリに既に存在する古いエンティティのインスタンスを作成するまで/作成しない限り、[保存] メニュー項目は無効のままになります。

ドキュメントが変更されたことを示すために、タイトルバーの赤いドット ボタンが正しく黒くなりますが、OS X / NSDocument はこれを認識しません。保存することはできません。

何か案は?

0 投票する
3 に答える
711 参照

core-data - Xcode4 でモデルを破損することなく正しく更新するにはどうすればよいですか?

Xcode3 では問題はありませんでしたが、Xcode4 では、コア データ モデルを更新すると、Apple のコードが約 3 分の 1 の確率で失敗し、「永続ストアの移行に失敗しました。ソース管理オブジェクト モデルが見つかりません」という恐ろしいメッセージが表示されます。エラー。

これが私のセットアップです(プロジェクトを自動移行するように構成した方法):

  1. Apple のテンプレートからの NSPersistentDocument
  2. Apple のモデル読み込みメソッドをオーバーライドします。私が行う唯一のことは、自動移行をオンにする storeOptions ディクショナリで 2 つのフラグを提供することです。

これが私が使用しているプロセスです(Xcode4の1つのバグをすでに回避しています!)

  1. モデルを選択します(Xcode4では「something.xcdatamodel」という名前で、左側にねじれがあります)
  2. エディタ メニューに移動し、[新しいモデル バージョンを追加...] を選択します。
  3. 新しいバージョンに前回より 1 大きい整数の名前を付けます。たとえば、前のバージョンが「4」の場合、新しいバージョンに「5」という名前を付けます。
  4. 右側のペインで、現在のモデル バージョンを新しく作成したバージョンに変更します。
  5. XCode4 バグの回避策: 任意のファイルを選択してから、新しく作成されたモデルを選択します。そうしないと、Xcode は新しく作成されたモデルで選択を表示しますが、代わりに以前のモデルを編集するため、CoreData のすべてが確実に破損します。
  6. モデルを編集します。この場合、既存のエンティティに新しい属性を追加しています
  7. 保存。建てる。走る。...クラッシュ。

私が言ったように、3回のうち約2回を除いて、これは正しく機能します。一度動作したら、(明らかに) 問題ありません。軽量の移行が完了し、次の保存で新しいモデル バージョンに保存されます。

したがって、上記の手順で間違っていることがあると思いますが、ドキュメントを5〜6回読んだことがありますが、明らかなことは何もわかりません。NSPersistentDocument のドキュメントがすべて古くなっていることは役に立ちませんが、私は iPhone でも軽量の移行を何度も行ってきたので、これを行うことにかなりの自信があり、正しいように思えます。


私が試した/チェックしたその他のこと: - iPhone Core Data Lightweight Migration Cocoa error 134130: ソース ストアのモデルが見つかりません(いいえ、ルート xcdatamodel のみが含まれていました)

0 投票する
1 に答える
122 参照

cocoa - NSPersistentDocument からのコマンド ライン引数の処理

私は NSPersistentDocument に基づいたアプリケーションを持っています。異なる条件とデータに基づく 3 つの異なるビューがあり、すべて正常に動作します。

現在、顧客はシェル スクリプトからアプリケーションを実行することも望んでいます。

例えば

open -a myapp.app --args -data list.csvアプリを起動してビュー A (データ グリッド) を開きます

open -a myapp.app --args -data list.myownformat -startline 6アプリを起動してビュー B (円グラフ) を開きます

NSPersistentDocument サブクラス内でコマンド ライン引数をどこでどのように処理する必要がありますか?

多くのアプリケーションでは、GUI を起動するデュアル起動 GUI または CLI が許可されていますが、NSPersistentDocument からこの結果を達成する方法を理解できません。

ベスト プラクティス、ヒント、ソース コードを歓迎します

0 投票する
2 に答える
350 参照

macos - NSPersistentDocument –ウィンドウにアクセスする方法は?

NSPersistentDocumentオブジェクトのウィンドウのいくつかのプロパティを設定したいと思います。どうすればアクセスできますか?

このようなより良い方法はありますか?

0 投票する
1 に答える
204 参照

cocoa - NSPersistentDocument で最新の Undo Manager がありません

コア データ データベースには、保存する直前に更新する必要がある計算値がいくつかあります。基本的に、エンティティ間のナビゲーションを容易にするために、いくつかのエンティティに番号を付けています。

現在、私はNSManagedObjectContextWillSaveNotificationそこでこの番号付けを観察し、実行しようとしています。私が行った変更は保存されているように見えますが、元に戻すマネージャーにはまだいくつかの変更が加えられているようです。これにより、管理対象オブジェクトのコンテキストでは ( ) がないことが示されていても、ドキュメントが変更されたように見えます (閉じるボタンにマークを付けますhasChanges)。一度元に戻すと、ドキュメントは変更されていないように見えますが、管理対象オブジェクトのコンテキストは変更されています。

元に戻すマネージャーが何らかの形で間違った場所にリセットされたのでしょうか、それとも私が何か間違ったことをしているのでしょうか?

アップデート

この再番号付けを行っているやや難読化されたコードは次のようになります。

には、の_contentViewController複数のインスタンスに解析されるテキスト フィールドが含まれていますSomeItem

0 投票する
3 に答える
2570 参照

cocoa - -makeWindowControllers は NSPersistentDocument を初期化するのに最適な場所ですか?

を使用して既存のドキュメントをロードするときNSPersistentDocument、初期化の一部として、いくつかのコンテンツを準備したいと思います:

このコードを に挿入する-initと、フェッチ リクエストは結果を返しません。

NSPersistentDocumentView-Controller コンポーネントをサブクラスから新しいサブクラスにリファクタリングしているときに、この問題が発生しましたNSWindowController。以前は でこの初期化を処理していまし-windowControllerDidLoadNib:たが、それは呼び出されなくなりました。

コードを から に移動する-initと、-makeWindowControllers期待どおりの結果が得られます。-makeWindowControllersこのようなコンテンツを準備するのに本当に適切な場所はありますか?

0 投票する
1 に答える
1576 参照

macos - NSManagedObjectContextObjectsDidChangeNotification が常に即座に呼び出されるとは限らない

NSPersistentDocument を使用する Mac アプリケーションがあります。Core Data を使用してこの情報を保存するために、オブジェクトが削除されたときに通知を受け取りたいです。だから私は NSManagedObjectContextObjectsDidChangeNotification を聞いています。多くの場合、オブジェクトが削除されるとすぐに呼び出されますが、削除されたすべてのオブジェクトが事前に通知されずに永続ドキュメントが保存された後にのみ呼び出されることもあります。ユーザーが既存のすべてのオブジェクトを直接エクスポートできるようにしたいので (削除されたものではなく)、削除情報を保存するためにすぐに通知を受けるにはどうすればよいですか、それとも別の方法で使用する必要がありますか?