問題タブ [nsmanagedobject]

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 に答える
1133 参照

iphone - NSManagedObjectContextのインスタンスを保存しても、変更可能な変換可能な属性は永続的に保存されません

Core Data+sqliteをデータキャッシュとして使用しています。アプリはファイルをコアデータに読み込み、コアデータを使用してアプリを実行します。保存は、NSManagedObjectContextとファイルの両方に対して行われます。ただし、Core Dataデータベースにデータを再入力せずにアプリを終了してリロードすると、-save:を使用して保存されたデータの一部(すべてではない)がデータストアに保存されないことに気付きました。

管理対象オブジェクトへの変更はすべてメインスレッドで1つのバッチで行われ、すべての変更が完了した後に-save:メッセージが送信されます。保存されていないデータは、変換可能な属性であり、コアデータオブジェクト内の唯一の変換可能な属性です。オブジェクトを保存するコードは次のとおりです。

アボート(); 呼び出されないので、-saveと仮定します。正しく呼び出されています。

関連しているとは思えませんが、このコードをメインスレッドで実行した後、別のスレッドで新しいNSManagedObjectContextを使用してNSFetchRequestを実行します。他のスレッドのコアデータに関連する他のことは何も起こりません。

変換可能な属性が保存されないのはなぜですか?

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

iphone - NSManagedObject init/deallocと同等

fooNSManagedObjectサブクラス内にオブジェクトivarbarがあり、オブジェクトが存在する限り、常にそこに存在する必要があります。

が正しく作成されることを確認するために、作成時に作成するようにfooawakeFromInsertをサブクラス化しました。ストアからフェッチされたときに確実に存在するように、awakeFromFetchでも同じことを行いました。foobarfoobar

これに対抗するために、foowillTurnIntoFault内とprepareForDeletionでリリースします。

ただし、deleteを実行するbarと、prepareForDeletionとwillTurnIntoFaultの両方が呼び出され、foo2回解放されることがわかりました。

おそらくprepareForDeletionでリリースできないことはわかっていますが、ここでのベストプラクティスを知りたいので、何かが障害になったことなどを理解しています。通常のオブジェクトの場合は、作成するだけです。fooinitで、deallocで破棄します。

ありがとう!

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

iphone - NSManagedObject Core Data - 構造体または共用体ではないメンバー「属性名」の要求

シナリオ:

「インポート」という名前の xcode プロジェクトを作成し、XML ファイルを読み込んでコンテンツをコア データ データベースにインポートしました。次に、SQLite ファイルをメイン バンドルに追加し、Core Data Books の例のコードを使用してインポートする 2 番目の「メイン」プロジェクトを作成します。「インポート」プロジェクトで .xcodedatamodel を変更し、ファインダーでそれを明らかにして「メイン」プロジェクトにドラッグし、そこに NSManagedObject モデル ファイルを生成しました。今まではこれでうまくいきましたが、Xcode は混乱しているようです...

最近、いくつかの属性を削除し、新しい属性を 1 つ追加しました。次に、上記と同じプロセスを実行したところ、「構造体または共用体ではないメンバー'属性名' の要求」と表示されます。記事「モデル名」と入力すると。esc を押して、インテリジェンスはまだ古い属性を取得していますか?

「インポート」プロジェクトでは、すべてが正常に機能していますが、どの属性でもエラーは発生せず、インテリジェンスは正しいですか?

アドバイスしてください、xcodeにキャッシュはありますか? 「すべてのターゲットを消去」を使用しましたが、うまくいかないようです。

ジェームズ

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

iphone - CoreData アプリで Shake-to-undo が機能するが、元に戻す/やり直しのプロンプトが表示されない

シェイクして元に戻す機能をサポートする CoreData ベースのアプリケーションがあります。これは現在正常に動作していますが、デバイスを振ると、NSUndoManager が通常無料で提供する通常の元に戻すプロンプトを最初に表示せずに、すぐに元に戻すことができます。

「元に戻すアーキテクチャ」ドキュメントから「iPhone での元に戻す」を読みました。

  • 実装canBecomeFirstResponder、復帰YES
  • ビューコントローラーbecomeFirstResponderを作るviewDidAppear
  • ビューコントローラーresignFirstResponderを作るviewDidDisappear
  • self.undoManagerビューコントローラーで読み取り/書き込みとして再宣言する
  • NSUndoManagerメソッドでand 設定self.undoManagerを作成しますUIViewController init(これが呼び出されることを確認しました)。
  • のセッターで に設定しself.managedObjectModel.managedObjectContext.undoManagerます。繰り返しますが、これが呼び出されていることを確認しました。これをしないと、元に戻す操作がまったく機能しません。self.undoManagermanagedObjectModel

私がすでに試したトラブルシューティング:

  • 元に戻すチェックは実際に機能します(管理対象オブジェクトモデルへの変更が元に戻されていることがわかります)
  • 検証canBecomeFirstResponderが呼び出されています
  • 元に戻す操作中にアクセサself.undoManagerが呼び出されているかどうかを確認します(そうではありません)。

だから私の質問は:

  • 元に戻すは機能するが、元に戻すプロンプトが表示されないのはどのような状況ですか?
  • これをトラブルシューティングするために、次に何を試しますか?
0 投票する
1 に答える
6190 参照

ios - iPhone & Core Data - NSManagedObject を削除しますか?

管理オブジェクト コンテキストを削除しようとしていますが、オブジェクト自体を削除する代わりに、すべてのインスタント変数を null に設定します。NSManagedObjectContext のインスタンスを削除しているときに何か問題がありますか?

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

core-data - willTurnIntoFault が複数回呼び出され、クラッシュする

NSManagedObject私のオーバーライドされた実装のサブクラスではwillTurnIntoFault、問題のオブジェクトを最初に作成したコードを元に戻すときに、 が 2 回呼び出されています。これにより、キー パスで KVO の登録を二重に解除しようとすると、クラッシュが発生します。

Apple のドキュメントによると、ここが KVO の登録を解除するのに適した場所です。

ちょっとしたコンテキスト - 元に戻す操作には、モデルの対応するビューをそのスーパービューから削除することが含まれます。ビューはそのモデルを保持します。

だから私の質問は:のサブクラスで 2 回呼び出される可能性があるプログラマ エラーの種類は何ですか?willTurnIntoFaultNSManagedObject

注: 以前deallocはこのクラスでオーバーライドしていましたが、NSManagedObject のサブクラスには推奨されないことに気付きました。それ以来、このコードを に移動しました-didTurnIntoFault。私は現在、Apple のドキュメントでオーバーライドしてはならないと言われている他のメソッドをオーバーライドしていません。

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

iphone - NSManagedObjectからサブクラス化されたクラスにメソッドを追加します

メソッドをオブジェクト(NSManagedObjectからサブクラス化)にアドしたい

しかし、その方法は使用できません

私のせいは何ですか。REMBoxの通常の(コアデータ)属性はうまく機能します。

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

iphone - NSManagedObjectサブクラスへのivarの追加

iPhoneのCoreDataで使用されるNSManagedObjectクラスのサブクラスがあります。ただし、そのクラスに追加したい一時的な「フィールド」(ivar)があります(ただし、データストアに保持したくありません)。非公式および公式のプロトコルを使用しようとしましたが、どちらも動作のような「静的変数」を提供します。(インスタンス変数ではなくクラス変数のように動作します)。なにか提案を?

私の最初の試みは、おそらくNSManagedObjectのサブクラスであるTest "Dummy-class"を作成し、次にTest-categoryを作成しました。

それらは通常のセッターとゲッターです。これが私がTestクラスを使用する方法です

NSManagedObjectサブクラス(私のエンティティ)を直接操作することもできますが、それがその方法だとは思いません。

0 投票する
5 に答える
32058 参照

core-data - 「NSManagedObject」が削除されたかどうかを確認するにはどうすればよいですか?

NSManagedObject削除され、その管理対象オブジェクトを含むコンテキストが保存されました。Core Data が永続ストアに次の保存操作中にオブジェクトを削除するように要求した場合、それisDeletedが返されることを理解しています。YESただし、保存は既に行われているため、 をisDeleted返しますNO

含まれているコンテキストが保存された後NSManagedObjectに が削除されたかどうかを確認する良い方法は何ですか?

(削除された管理対象オブジェクトを参照しているオブジェクトがまだ削除を認識していない理由を知りたい場合は、performSelectorOnMainThread:withObject:waitUntilDone:.

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

iphone - 管理対象オブジェクト メソッドのシグネチャ

以下のオブジェクトを管理しています。initFruitStand メソッドの addCratesObject に対して次の警告が発生しました。署名は一致するのに一致しないと不平を言うのはなぜですか? 何が問題ですか?

関数 '-[FruitStandViewController initFruitStand:]':

「FruitStand」は -addCratesObject に応答しない場合があります:

'(一致するメソッド シグネチャのないメッセージは、'id' を返し、'...' を引数として受け入れると見なされます。)

MyViewController.m

FruitStand.h

FruitStand.m

Crates.h

Crates.m