問題タブ [nspersistentstore]

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 投票する
4 に答える
5758 参照

ios - NSPersistentStoreCoordinator に SQL ストアを追加するときに、断続的な「承認が拒否されました」および「ディスク i/o」エラーをデバッグ/処理する方法は?

アプリ ストアにアプリがあり、ロギング サービスを使用してクラッシュ ログと関連するログ データを取得しています。断続的なクラッシュ (影響を受けるユーザーの数が少なく、ユーザーごとのクラッシュの数が少ない) が見られますが、困惑しています。

これらのクラッシュで何が起こるかは次のとおりです。

  1. アプリが Core Data スタックを起動して初期化する

  2. アプリは、次のコードを使用して NSPersistentStoreCoordinator に SQL ストアを追加しようとします (storeURL有効です)。

    /li>
  3. このストアを追加するときに、次のいずれかのエラーが発生します:

NS エラー:

Domain=NSCocoaErrorDomain
Code=256 "The operation could not be completed. (Cocoa error 256.)"
UserInfo=0x1dd946a0 {NSUnderlyingException=authorization denied, NSSQLiteErrorDomain=23}

また

NS エラー:

Domain=NSCocoaErrorDomain
Code=256 "The operation could not be completed. (Cocoa error 256.)"
UserInfo=0xc6525d0 {NSUnderlyingException=disk I/O error, NSSQLiteErrorDomain=10}

この状態の後、アプリが機能するには SQL ストアが必要なため、アプリがクラッシュします。新しい storeURL を試すことで、この失敗を適切に処理しようとすることもできますが、ユーザーが既存のデータを失うことは望ましくありません。また、私はこの問題を個人的に再現したことはありません。影響を受けるユーザー数が少なく、クラッシュ ログに基づいて、影響が少ない問題であり、その後のアプリの起動時に再発することはないと考えています。

これらの状態をデバッグおよび防止/処理する方法についていくつかの提案をしてくれる Core Data の第一人者がそこにいることを願っています。私のコア データ スタック初期化コードは xcode プロジェクト ジェネレーターから直接作成されたものであり、永続ストア コーディネーターが (起動時に) 1 回だけ初期化され、この初期化でこのエラーが発生するという点で、同時実行の問題を除外しました。

関連する場合は、より多くのコード/情報を提供してください。

ありがとう!

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

ios - コア データを含む RestKit: RestKit RKObjectManager で NSPersistentStore を使用する

Core Data で RestKit を使用しています。今まで、次のようにRestKitを初期化しました:

この xcode 自動生成コア データ プロパティなし:

データのフェッチは、NSManagedObject で objectsWithFetchRequest: を呼び出すことで機能しました。NSFetchingResultsController を使用したいので、少なくともそのような managedObjectContext が必要です。しかし、この managedObjectContext はどこから取得するのでしょうか? 私の最初のアイデアは、AppDelegate.m で自動生成された managedObjectContext からのものでしたが、この 3 つのプロパティ managedObjectContext、managedObjectModel、persistentStoreCoordinator はすべて互いに依存しています。

RestKit を Core Data に正しく「リンク」するにはどうすればよいですか? persistStoreCoordinator を RestKit と RKObjectManager に「リンク」するにはどうすればよいですか?

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

core-data - データベースに事前入力し、コア データにフラグを設定して、アプリのインストールごとに 1 回だけオブジェクトをデータベースに挿入することを保証する方法

コア データを使用してデータベースに事前入力する必要がありますが、アプリがインストール後に初めて起動されたかどうかを示すフラグを設定する必要があります。これを行う方法がわかりませんか?

私のappDelegate.mファイルで私がやっていることはここにあります

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

core-data - コア データ: データベースのオブジェクトごとのコピーを作成する

File Manager を使用して sqlite ファイルのコピーを作成したり、Persistent Store Coordinator の migratePersistentStore メソッドを使用したりせずに、Core Data データベースのバックアップ コピーを作成したいと考えています (ここで説明するには長すぎるため)。私がやりたいことは、元のファイルと同じ MOMD で新しい永続ストアを開き、新しい管理対象オブジェクト コンテキストを作成してから、データベース内のすべてのオブジェクトを反復処理して、それらを新しいコンテキストに挿入することです。

これは単純なエンティティに対しては機能しますが、問題は、私のモデルには約 20 のエンティティがあり、その多くが 1 対多および多対多の関係を持つことです。少し複雑な解決策は、すべてのオブジェクトを新しい MOC に挿入し、すべての新しい管理対象オブジェクトをメモリに保持し、それらを使用して後続のパスでオブジェクト間のすべての関係を結びつけることです。しかし、それは本当に厄介な解決策のようです。

これを達成するためのクリーンでエレガントな方法はありますか?それは、自分のモデル用にカスタマイズされたソリューションだけでなく、すべてのオブジェクトを同時にメモリに保持する必要なく、あらゆる種類のデータ モデルで機能する可能性がありますか?

ありがとう。

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

ios - NSInternalInconsistencyException: NSPersistentStore を取得してストアを開始または作成できません

エラーであることがわかったエラーを解決するために一日中取り組んできましたNSInternalInconsistencyException。表示されるエラー コンソール メッセージは、「この NSPersistentStoreCoordinator には永続ストアがありません。保存操作を実行できません。」また、「実行が中断されました。理由: EXC_BAD_ACCESS (コード=1、アドレス=0x1)」と表示されます。

App Delegate に次のコードがあります。

これに似た他の質問をよく読んだところ、私のコードには一貫性があり、この問題は発生していないようです。それでも、私は...

アプリのクリーニングと削除、および再インストールの両方を試しました。デバイスとシミュレーターの両方でアプリを試しました。追加した URLPath の名前「shindy.sqlite」を、これまでに使用したことのないさまざまな名前に変更しました。また、アプリにストアを作成させるために[self saveContext];、メソッドで強制的にインスタンス化しようとしました。applicationDidFinishLaunching

問題を解決しようとする試みはすべて、単に同じエラーを返しました。他に何を試すべきかわかりません。

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

ios - nilモデルの読み取り投稿でNSPersistentStoreCoordinatorを作成できません。修正なし

何が起こったのかわからないので、モデルバージョンエラーが発生し始めました。ここでいくつかのオプションを読んだ後、モデルを削除して再度作成することになりました(多くの苦痛)。ただし、「nilモデルでNSPersistentStoreCoordinatorを作成できません」というエラーが発生します。

私はここでほとんどの投稿を読んでほしいと思います(多くのアプローチを試しましたが、うまくいきませんでした)。ファイルがどこにあるか(iPhoneSimulator)を見つけたので、アプリの内容を調べましたが、そこにmomまたはmomdファイルは見つかりませんでした。そこで、バンドルにコピーし、コンパイルリソースにあることを確認し、シミュレーターをリセットし、クリーンアップして再度ロードしましたが、見つかりませんでした(アプリのクラッシュもありました)。

何かご意見は?

ありがとう

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

ios - iOS UIManagedDocument:プリロードされた永続ストアを開くことができません

UIManagedDocumentに基づいてアプリに永続ストアをプリロードして、コアデータを処理しようとしています。

私がアプリBで使用しようとしている永続ストアは、アプリAのおかげで「生成」され、入力されます。アプリAとBIの両方で、Justin DriscollのUIManagedDocumentハンドラーを使用します( Mister Driscollに感謝します!)。すべてアプリAで完全に機能します。

このスレッドで説明されている手法に基づいて:UIManagedDocumentを使用してiOS 5にコアデータデータベースをプリロードし、永続ストアをBのアプリバンドルに配置し、必要に応じてこのストアをドキュメントフォルダーにコピーしようとします(実行されていない場合) before)インスタンス化する直前のinit。

バンドルからドキュメントへのコピーはすべて問題ありませんが(別の方法を試し、ファインダーとnslogのおかげで作成を確認しました)、「ドキュメント」を開くことができません。アプリはクラッシュせず、ビューは表示されますが、テーブルは空です(アプリAとまったく同じコードを使用し、同じfetchedResultsControllerを使用します)。最初に、コピーされた永続ストアが空だと思った後、ドキュメント/コピーされた永続ストアを正しく開くことができないことに気付きました)=>ドキュメントの状態= 5、つまりUIDocumentStateClosedとUIDocumentStateSavingErrorのエラー(正しく解釈した場合??? )。

(注:バンドルから直接ドキュメントをインスタンス化して開くことも試みましたが、同じ問題が発生しました:doc state = 5)

だから...このドキュメントの状態と戦う3日間=5で、何を修正するかについての手がかりはありません

アプリBのバンドルに入れたファイルに何か問題があると思います(現在、[追加されたフォルダーのフォルダー参照を作成する]を選択してファインダーからxcodeにドラッグアンドドロップします)おそらく、いくつかのオプション、メタデータ、またはファイルに関するものです権限または...

何を調査するかについて何か考えはありますか?

(次のコードについてではないと思いますが...)これが私が初期化する方法です(Justin Driscollハンドラーに基づいています。custoのみです:ドキュメントフォルダーにストアパッケージがあるかどうかを確認します。そうでない場合は、ベースで作成しますバンドル内のファイル)

Driscoll氏によって提供されたperformWithDocumentコードに対して行った「変更」のみが、何が起こっているかを確認するためのnslogです(最初に開いた試行ごとにドキュメントの状態が1から5になり、その後5に固執します...)

0 投票する
0 に答える
2217 参照

ios - データベースを開けません - iCloud / Core Data

iCloud で使用する Core Data データベースをセットアップしようとしています。基本的なことは理解しており、セットアップ方法に関するすばらしいチュートリアルに従いました。

データベースに接続できなかったというエラーが表示されます:

Unresolved error: Error Domain=NSCocoaErrorDomain Code=256 "The operation couldn’t be completed. (Cocoa error 256.)" UserInfo=0x1c5de2a0 {NSUnderlyingException=unable to open database file, NSSQLiteErrorDomain=14}, { NSSQLiteErrorDomain = 14; NSUnderlyingException = "unable to open database file"; }

永続ストアを返すコードは次のとおりです。

編集

これが私の managedObjectModel メソッドです (CategoryModel は .xcdatamodeld の名前です)。

編集 2

ログで編集:

編集 3

developer.icloud.com からファイルをダウンロードしようとすると、ダウンロードされず、メッセージが Safari コンソールに送信されますFailed to load resource: the server responded with a status of 409 (Conflict)

ファイルがアップロードされると、Safari コンソールにいくつかの警告が表示されます。

編集 [現在の番号は何でも]

永続ストアをログに記録する場合、NSLog(@"MOC: %@", self.managedObjectContext.persistentStoreCoordinator.persistentStores);

次の出力が得られます。

unable to connect to databaseしたがって、ローカル永続ストアのみが存在するため、エラーが呼び出されたと推測しています

新しいエラー

編集 - ディレクトリのエラー

問題は、ディレクトリが作成されていないことにあると思います。

次のログは、ファイルを転送しようとすると、ディレクトリが存在しないことを示しています。これを修正できれば、iCloud は機能すると思います。

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

core-data - NSPersistentStoreDidImportUbiquitousContentChangesNotification がどちらの iOS デバイスでも発生しない

SQLite ログを使用して iCloud で動作するようにコア データをセットアップしました。コア データ ログと SQLite ログの両方を有効にし、スキーマでレベル 3 に設定しました。ローカル ストアまたはクラウドからデータを取得または配置する際にエラーが発生するものはありません。お店。

私のローカル ストアはすべての SQLite データを格納しますが、クラウド ストアは 2 つのエンティティのみを移動するように構成されています。これは、すべてのローカル ストアを更新する必要がないためです。

永続ストアをログに記録すると、両方が表示されます。

developer.icloud.com には、データを保存するためのフォルダーがあり、2 つのサブフォルダー (iPad 用と iPhone 用) があります。これらの各フォルダーには、2 つのサブフォルダーと 1 つのreceipt.0.cdtファイルがあります。

すべてがセットアップされているように見えますが、アプリケーション内の 2 つのエンティティのいずれかを操作すると、NSPersistentStoreDidImportUbiquitousContentChangesNotification(どちらのデバイスでも) 起動されません。

ローカル データ ストア (すべてのエンティティのローカル コピーを保持する) が更新され、この変更が UI に反映されていても。

操作されているストアは次のとおりです (操作が発生している間にログに記録されます)

以下は、エンティティを操作した後に生成されたデータのログです。

データストアへのデータのロードまたは追加時にエラーが発生しないため、これは本当に困惑しているため、理論的には機能するはずです。

手伝ってくれてどうもありがとう!!

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

ios - Coredata-MO の変更は、PS 内の既存のレコードごとに反映されます

コアデータについては、インターネット上で多くのチュートリアルと記事を見つけましたが、リアルタイムで初心者にとってより便利なサンプルアプリを作成しています。サンプル コードはこちらにあります。

コアデータ構造コアデータ構造はこのようなものです。

アーティスト、アルバム、曲にエントリーします。しかし問題は、すでに追加されているアーティストに対して後で行った編集がアルバムに反映されないことです。

そうするために何が欠けていますか?

この問題を再現するには、プロジェクトをダウンロードして実行するように依頼します。

  • アーティスト、アルバム、曲にエントリを作成します。
  • その後、[アーティスト] タブに移動し、アーティスト エントリの一部を編集します。
  • [アルバム] タブに移動します。関連するアルバム エントリの古いアーティスト名と同じアーティスト名が表示されます。

これが問題です。理想的には、そこに新しいエントリが表示されるはずです。

これを達成するための本物の方法が欲しい