問題タブ [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 投票する
1 に答える
140 参照

objective-c - NSPersistentDocument の名前変更後の警告シートを防止する

ドキュメントの名前が変更されるたびに、自動保存がブロックされ、名前変更後の最初の保存で画像のメッセージが表示されます。

ここに画像の説明を入力

どちらのボタンもユーザーを自動保存可能な状態に戻すため、技術的には問題ではありませんが、私のユーザーにとっては混乱を招きます。

メソッドをフックしてみました

and のさまざまなフレーバーを使用するupdateChangeCount:updateChangeCountWithToken: 、警告が一貫して表示されます。

名前変更/移動後に標準の自動保存動作を再開する状態にドキュメントを配置するにはどうすればよいですか?

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

cocoa - 不明なクラス '_FITagEditorView' エラー: これは正常ですか?

NSPersistentDocumentクラスを利用しています。ドキュメントを開くと、次のエラーが発生します。

あなたの誰かが同じエラーを抱えていましたか?正常ですか( の新機能によるものMavericksですか)? どうすれば解決できますか?

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

cocoa - NSPersistentDocument のデフォルト NSManagedObjectContext を変更する

コアデータ初心者です。で初期化して使用するために、のデフォルトNSManagedObjectContextを変更しようとしています。NSPersistentDocumentNSMainQueueConcurrencyType

現在、私はこのようにやってい-windowControllerDidLoadNib:ます:

これは一見うまくいきます。-windowControllerDidLoadNib:しかし、MOCの初期化が最善の方法なのか、それとも別の場所に配置したり、別の方法で初期化したりする必要があるのか​​ 疑問に思っています。

助けてくれてありがとう。

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

macos - ドキュメントベースのコア データ アプリケーションの保存ダイアログのファイル形式を sqlite に事前設定する方法は?

対応する Xcode 5.1 テンプレートから、10.9 専用のドキュメント ベースのコア データ アプリケーションを開始しました。

アプリケーションのファイル メニューから保存ダイアログを開くと、バイナリ、SQLite、XML の 3 つのファイル形式オプションが表示されます。

ユーザーにこの選択肢を与えたくありませんが、代わりにファイル形式を SQLite に事前設定し、保存ダイアログにオプションを表示しなくなりました。

どうすればこれを達成できますか?

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

macos - NSPersistentDocument アプリケーションで「名前を付けて保存」が機能しない

のサブクラスを使用してNSPersistentDocumentデータを保存する OS X アプリケーションがあります。Core Data の永続ストア タイプは SQLite です。Xcode でコア データを使用してドキュメント ベースのアプリケーションの新しいプロジェクトを作成するときに作成される標準のメニュー コマンドに依存しています。

このアプリケーションは約 2 年前から存在し、常に進化しています。ちょうど今日、私の最新バージョンで「名前を付けて保存」が機能しないことを発見しました。動作は次のとおりです。

  • 新しいドキュメントを作成し、いくつかのデータを入力します。
  • ドキュメントを保存して閉じ、再度開きます。すべて順調。次に、[名前を付けて保存] を選択し、ファイルの新しい名前と場所を選択します。名前が変更され、さらにデータを入力できます。
  • ドキュメントを保存して閉じ、再度開くと、完全に空です。
  • 元のドキュメントを開くと、名前を付けて保存したドキュメントにあるはずのすべての変更がそこにあります。
  • アプリケーションがクラッシュしたり、エラーが発生したりすることはありません。

かつては正しく機能していたと確信しています。プログラムの最初の「公式」バージョンを試しましたが、動作は同じです (間違っています)。

編集: Core Data エンティティを 1 つだけ使用して、同じタイプの新しい Xcode プロジェクトを作成しました。動作は同じです。私のアプリケーションとの唯一の違いは、新しいプロジェクトが「名前を付けて保存」ではなく、10.7 Lion で導入された新しい「複製」メニュー コマンドを自動的に使用したことです。そのため、オプション キーを押して [名前を付けて保存] を選択する必要があります。

10.9.3 でのみテストしましたが、2 つの異なる Mac でテストしました。誰がどこを見ればいいのか考えていますか?

編集 2:特定のアカウント (2 台のマシン上の私のアカウント) に関連しているようです。別のアカウントで正しく動作します。

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

core-data - NSPersistentDocument のランタイム生成カスタム NSManagedObjectModel

Core Data を使用するドキュメント ベース (OS X) アプリがあるため、ドキュメントは NSPersistentDocument のサブクラスです。ユーザーがドキュメントを作成するとき、管理オブジェクト モデル内の特定のエンティティが持つ属性の数を決定する設定を指定します。たとえば、"Baseball Game" エンティティは、ドキュメントの作成時にユーザーが指定した数に応じて、4 ~ 9 のイニング属性を持つことができます。効率化のために、指定されたイニング属性を正確に含む野球ゲーム エンティティを使用して、ドキュメントの作成時に管理対象オブジェクト モデルが生成されます。したがって、5 イニングのドキュメントは、9 イニングのドキュメントとは異なる管理対象オブジェクト モデルを持ちます。

管理オブジェクト モデルを動的に設定するには、ドキュメントでオーバーライド-(id)managedObjectModelする必要があります。これは些細なことであり、適切なイニング数でマネージド オブジェクト モデルを簡単に提供できます。ただし、ユーザーが保存されたドキュメント (不明なイニング数) を開くと、ドキュメントに管理オブジェクト モデルを与えるように再度求められます。-(id)managedObjectModel. 私の難問は、自分自身を知らない場合、ドキュメントに何イニングあるのかをどのように伝えることができるかということです。マネージ オブジェクト モデルは実行時に作成および設定されるため、イニング数を示す何らかのプロパティをドキュメントに追加することをお勧めします。ドキュメントごとに NSUserDefaults に似たものを考えていましたが、そのようなものはありません。私が考えることができる唯一の方法は、明示的にイニング数を与えるエンティティ/属性を保存することですが、ドキュメントに管理オブジェクトモデルを与えるまでアクセスできません! これについての適切な方法は何ですか?

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

macos - NSPersistentDocument OSX の正しいディレクトリ

ユーザーが単一のウィンドウにデータを入力する靴箱型のアプリケーションを作成しています。コード データを使用してデータ モデルを構成しました。Apple のドキュメントには、ユーザー データはライブラリ ディレクトリに保存する必要があると記載されていますが、自動生成されたコードは Application Support ディレクトリにディレクトリを作成するようであり、ドキュメントには「ユーザー データを保存してはならない」と記載されています。どちらが正しい?もう 1 つの質問は、applicationDidFinishLaunching メソッドで NSPersistentDocument のインスタンスを作成すべきではないということです。

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

objective-c - 以前にロックされたドキュメントを保存するときに NSPersistentDocument が失敗する

サブクラスを使用してロックされたファイルを開くNSPersistentDocumentと、コンソールに次のメッセージが表示されます。

読み取り/書き込み可能なパス [URL] に読み取り専用ファイルを追加しようとしています。代わりに読み取り専用を追加します。これは、将来的には重大なエラーになります。NSReadOnlyPersistentStoreOption を指定する必要があります。

ドキュメント ウィンドウのタイトルは「(ドキュメント名) - ロック済み」です。ユーザーがロックを解除し、変更を加えてから保存しようとすると、エラーで保存に失敗します

保存中にエラーが発生しました。

NSPersistentDocument は、ユーザーがドキュメントのロックを解除したことを認識できず、読み取り/書き込みモードでドキュメントを再度開かないようです。これはバグですか、NSPersistentDocumentそれとも何か不足していますか?

のファイル I/O メソッドをオーバーライドしていませんNSPersistentDocument