問題タブ [nsmanagedobjectcontext]
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.
cocoa - NSUndoManager、Core Data、および選択的な元に戻す/やり直し
私は、ツリーに似た管理対象オブジェクトのかなり大きな階層を持つコア データ アプリケーションに取り組んでいます。
基本オブジェクトが作成されると、いくつかの子オブジェクトが作成され、それらが独自の子オブジェクトを作成します。これらの子オブジェクトはそれぞれ、NSURLConnections を使用して情報を収集できます。
ここで、managedObjectContext の undoManager で元に戻す/やり直しをサポートしたいと思います。問題は、ユーザーがベース オブジェクトを作成し、そのアクションを元に戻そうとすると、ベース オブジェクトが削除されないことです。代わりに、1 つ以上の子オブジェクトが削除される場合があります。明らかに、この種のアクションは予測不可能で望ましくありません。
ということで、アンドゥ登録をデフォルトで無効にしてみました。disableUndoRegistration:これは、managedObjectContext で何かが変更される前に呼び出すことで行いました。次に、ベースオブジェクトの作成などのベース操作の前に登録の取り消しを有効にし、後で登録を再度無効にします。
元に戻そうとすると、次のエラーが表示されます。
undo: NSUndoManager 0x1026428b0 が無効な状態です。ネストされた undo グループが多すぎる状態で undo が呼び出されました
考え?
core-data - NSManagedObjectContext のすべてのオブジェクトをクリアするには?
NSManagedObjectContext で単一のオブジェクトを追加または削除しても問題ありませんが、NSManagedObjectContext で一度にすべてのオブジェクトをクリアする API がないのはなぜでしょうか?
変更がコミットされたときに永続ストアから削除するオブジェクトを指定します。
- (void)deleteObject:(NSManagedObject *)オブジェクト
一度にすべてのオブジェクトを削除するための clearAllObjects などの API がないのはなぜですか?
ios - CoreDataでMOMDファイルのパスを取得する方法
みんな、私はこの質問を見て、使用しました
ただし、私のコードでは、NSLogを介してファイルパスを印刷して、momdファイルのフルパスを使用してコンソールに送信できるようにしたいと考えています。問題は、Objective cを使用してMOMDリソースへのパスを抽出する方法がわからないことです。managedObjectContentコンソールにログを記録しようとすると、気にしない非常に長いアーケインデータが出力されてしまいます。では、momdファイルのパスのみを取得するにはどうすればよいでしょうか。サンプルコードをお願いします!前もって感謝します。
iphone - managedObjectContext で fetchRequest を中止します
完了するまでに最大 4 ~ 5 秒かかる fetchRequest があります。入力と同時に検索するソリューションの一部であるため、fetchRequest を中止する方法はありますか?
ユーザーが入力を終了してから 600 ミリ秒後にデータベースの検索を開始するタイマー セットを使用します。そのため、古い検索が完了する前に新しい検索を開始する必要がある可能性があります。
正しいと思われる NSMangedObjectContext のメソッドは見つかりませんでした。古い fetchRequest = nil を設定するだけですか? それともまだ何か裏で動いているのでしょうか?
何か案は?
前もって感謝します!
PS: また、クエリの速度を向上させようとしています。多分誰かもそれについての考えを持っています: https://stackoverflow.com/questions/4695729/query-performance-with-large-database
multithreading - Core Data とマルチスレッド
私は Marcus Zarra の Core Data ブックのマルチスレッドに関する章を読み、彼のサンプル コードをかなり詳しく調べました。しかし、彼のコードや他の場所で見つけた他のコードは、お互いを認識する必要のないバックグラウンド プロセスに焦点を当てているようです。これらの例は、ツリー構造のインポートには適していますが、有向非巡回グラフのような、より一般的な (複雑な) 構造のインポートには対応していません。
私の場合、C++ クラス階層を解析しようとしており、できるだけ多くの NSOperations を使用したいと考えています。遭遇したクラスごとに NSManagedObject インスタンスを作成し、保存されるたびに異なる NSManagedObjectContexts をマージしたいと考えています。
余談ですが、ファイルを繰り返し処理し、一度に 1 つずつ解析する単一の NSOperation で動作させることができます。この実装では、メイン スレッドの MOC で -mergeChangesFromContextDidSaveNotification: を呼び出す -mergeChanges: アプローチがうまく機能します。
しかし、理想的には、1 つの NSOperation でソース ファイルを反復処理し、NSOperations を生成して各ファイルを解析します。私はいくつかのアプローチを試みましたが、うまくいかないようです。最も有望なのは、各 NSOperation が NSManagedObjectContextDidSaveNotification を監視するようにすることでした。-mergeChanges: を使用すると、次のようになります。
基本的に、解析中の NSOperation の main() は ivar 'needsToMerge' を定期的にチェックしていました。true の場合、-mergeChangesFromContextDidSaveNotification: は、キャッシュされた NSNotifications を使用してローカル MOC で呼び出されました。そして、needsToMerge がリセットされました。通知がローカルで発生した場合、メイン スレッドはその MOC で -mergeChangesFromContextDidSaveNotification: を実行するように指示されました。
これが機能しなかった理由と、これが得られた理由があると確信しています。
警告: 呼び出しをキャンセルしています - 現在のスレッドのスタック上の objc コードにより、これは安全ではなくなります。
また、NSPeristentStoreCoordinator のロックを使用してアクセスを制御しようとしましたが、NSManagedObjectContext の -save: メソッドの呼び出し中にロックが保持されると問題が発生します。なぜなら、-save: は関心のあるオブザーバーに保存イベントを通知し、-mergeChangesFromContextDidSaveNotification: の取得をブロックしているように見えるからです。 PSCのロック。
これはずっと簡単なはずです。
sqlite - ios は sqlite db と xcdatamodel を作成します
プロジェクトで nsmanagedobject を使用して sqlite データベースを使用したいのですが、CoreDataBooks サンプルをダウンロードしましたが、よくわからないことがあります...
たとえば...テーブルとxcdatamodelの間のリンクはどこですか? 自分のデータベースで sqlitedb を変更して xcdatamodel を変更しようとしましたが、うまくいきません
手伝って頂けますか?ありがとう
iphone - iPhone: appDelegate を使用して NSManagedObjectContext にアクセスできません
私はいつか iPhone の開発を開始し、アプリケーションにコア データを実装しようとしています。
FetchRequest を実行する過程で、次のコードで立ち往生しています...
デバッグ中に次のエラーが表示されます...
アプリを実行すると、クラッシュするだけです。
デバッグモードで「続行」ボタンを押すと、このエラーが何度も表示されます。
コードをこれに変更してみました.....
これによりアプリを実行できますが、シミュレーターのホーム ボタンを押すと、コンソールに同じエラーが表示されます。
ここで何がうまくいかないのでしょうか?
core-data - 特別な場合にManagedObjectContextを他のViewControllerに渡す方法
私は次のようなrootViewControllerを持っています:
ヘッダ:
実装:
ただし、managedObjectModelをテーブルビューに転送してからマップビューに転送し、ユーザーが見たいものに応じてマップビューがクエリを実行できるようにする必要があります。私は(レシピから)次のようなアップルのサンプルコードを調べていました:
それがappDelegateにあることは知っていますが、行が選択されたとき、または別のビューがスタックにプッシュされたときに同じことができると思いますよね?問題は、ビューのほとんどを次のようなペン先で構成したことです。

このため、サブビューを追加するときにPermitListViewControllerに直接アクセスしないため、AppleがmanagedObjectModelを代替のviewController(この場合はPermitListViewController)に転送するために採用している同様の戦略を使用できません。誰かが私のmanagedObjectModelを私のPermitListViewControllerに取得する方法について何か考えを持っているなら。シェアしてください!前もって感謝します!
編集:私はmanagedObjectModelをシングルトンクラスに配置することを考えています。それについて皆さんはどう思いますか?良いプログラミングの練習?知っておくべきことはありますか?ありがとう。
cocoa - NSManagedObjectContext の objectWithID を使用する「適切な」方法は何ですか:
ドキュメントの状態:
...このメソッドは常にオブジェクトを返します。objectID で表される永続ストア内のデータは存在すると見なされます。存在しない場合、返されたオブジェクトは、プロパティにアクセスしたとき (つまり、障害が発生したとき) に例外をスローします。この動作の利点は、フォールトを作成して使用し、後で基礎となる行を作成するか、別のコンテキストで作成できることです。
また、Apple の「Core Recipes」サンプル アプリでは、メソッドの結果を使用して NSFetchRequest を設定し、リクエストの結果を使用して、その旨のコメントを付けています。
結果が直接使用される多くの例 (他のコードや Apple の「iClass」) を見てきましたobjectWithID。つまり、そのプロパティがアクセスされ、楽しく処理されます。
objectWithID 常に「おそらくこれが存在する」オブジェクトとして扱われるべきですか?
私はこれに出くわしたばかりで、その存在に反対していなかったので尋ねています.
ios - ID:[...]のNSManagedObjectが無効になりました
コアデータを使用してアプリを構築しています。appDelegateによってロードされた私のRootViewControllerは、ほとんどがテンプレートからのストックです。ただし、エンティティ名を「Clocks」に変更し、一連の行を追加しました。
私のRootViewControllerは、UINavigationControllerを持つMVCを提示します。データベースにデータを保存すると、UINavigationControllerクラスは、[[UIApplication sharedApplication]delegate]実際に保存アクションを実行するappDelegateにアクセスするために使用してデータを保存しました。データの編集も同じように行われますが、アプリデリゲートで挿入関数を呼び出す代わりに、更新関数を呼び出します。
さて、これはすべてうまくいきます..実際には完全に。しかし...数回編集を開いてビューに保存すると、アプリがクラッシュします。これは、シミュレーターとiPhone 4の両方で行われます。これは私が言っていることの例です(ムービー):http ://dl.dropbox.com/u/3077127/has_been_invalidated.mov
これは私のRootViewController.mのコードです:
編集
これは保存ボタンのコード、 AddClockNavigationController.mです:
ClockAppDelegate.m
私が間違っているのは何ですか?
よろしく、
ポールピーレン