問題タブ [uimanageddocument]
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.
core-data - コア データと UIManagedDocument: 2 つの異なるエンティティという名前のモデルをマージできません
編集
私はこれをここに再投稿しました: Xcode 4.3 の Core Data & UIManagedDocument: Can't merge models
別のエラーを表示することができました。
編集の終わり
そのため、共有を使用した Core Data App を作成していUIManagedDocument
ます。UIManagedDocument
ヘルパー クラスを使用してこれにアクセスしますDocumentHandler
。別のクラスで次のように使用できることを願っていますviewWillAppear
。
`
'
ドキュメントのコンテキストを使用して、NSManagedObjects を作成します (標準の Core Data のものですよね?)。問題は、アプリを実行すると次のエラーが発生することです。
「名前が異なる 2 つのエンティティを持つモデルをマージできません」
私はこの DocumentHandler で頭がいっぱいです。これが簡単な修正であることを願っています。
私はデータモデルなどの個別のバージョンを作成したことはなく、何も移行しようとはしていません。このアプリを初めて実行したいだけです。
読んでくれてありがとう。
core-data - Xcode 4.3 の Core Data & UIManagedDocument: モデルをマージできない
このウェブサイトに貢献してくれたすべての人々に感謝します。私はプログラミングの初心者の一人であり、皆さんは私をとても助けてくれます. というわけで、私の最新の問題に取り掛かりましょう!
UIManagedDocument
を使用して Core Data モデルを保存するアプリを作成しています。以前は次のコードでを作成していましたUIManagedDocument
が、Xcode 4.3.2 (Mac App Store で更新されるもの) で問題が発生しました。
コードは次のとおりです。
コンソールに次のようなエラーが表示されます。
キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: ''Foo' という名前の 2 つの異なるエンティティを持つモデルをマージできません''
これが問題です。私はバージョンやそのようなものを動作させようとはしていません。2 種類のエンティティを使用してデータ モデルを作成し、アプリで UIManagedDocument を開こうとしているだけです。
Xcodeをアンインストールして再インストールしましたが、うまくいきませんでした。また、Core Data Model を削除し、最初からやり直しましたが、うまくいきませんでした。
私は完全に道に迷っており、これをトラブルシューティングするためにすでに約 2 泊を費やしています。
助けて!お願いします!読んでくれてありがとう。さらに情報が必要な場合はお知らせください。魂を込めてお答えします...
ios - UIManagedDocument の作成と最初の iCloud 同期
アプリに iCloud 同期を追加しています。私のUIManagedDocument
ストアはサンドボックスにあり、その変更ログは iCloud (で指定NSPersistentStoreUbiquitousContentURLKey
) にあります。問題は、 2 番目のデバイスで初めてアプリをインストールして実行するときに、最初の同期を行う (1 番目のデバイスで作成された更新をプルする) のに何分もかかることです。その同期は明らかに内部で行われているため、これは実際の問題ですUIManagedDocument:saveToURL:completionHandler
。そのため、完了ハンドラー ブロックが呼び出されるまでに長い時間がかかり、返さUIManagedDocument
れる前にアクセスするとUIManagedDocument:saveToURL
、当然のことながらクラッシュが発生します。
データベースをすばやく開き、バックグラウンドで同期を実行したいと考えています。どうすればいいですか?
ios5 - UIManagedDocument は関係の変更をすぐに更新しません
プロジェクトで UIManagedDocument を使用しており、既存のオブジェクトの関係を変更する必要があります。
すべてのオブジェクトは既にデータベースに存在するため、temporaryID/permanentID の問題は扱っていません。また、変更を保存updateChangeCount:
するために UIManagedDocument をほとんど使用しています。したがって、UIManagedDocument の通常の容疑者の問題ではありません。
モデル:
手術:
Department
を呼び出して、aをCompany
別の場所に移動し[aDepartment setCompany:newCompany]
ます。
状況 1 (成功):
Department
エンティティ呼び出しで fetchRequest を実行するとcompany = newCompany
、期待される結果が返されます。
状況 2 (失敗):
Employee
エンティティ呼び出しで fetchRequest を実行してdepartment.company = newCompany
も結果は返されません。
状況 2 は、UIManagedDocument の自動保存後にのみ成功します。
この問題を解決する方法はありますか?
objective-c - UIManagedDocumentはバックグラウンドスレッドにオブジェクトを挿入します
これはStackOverflowに関する私の最初の質問です。エチケットを破っている場合は、すみません。私はObjective-C/アプリの作成にもかなり慣れていません。
私はCS193Pスタンフォードコース、特にCoreDataの講義/デモをフォローしています。Paul HegartyのPhotomaniaアプリでは、彼はテーブルビューから始めて、UIフローを中断することなく、バックグラウンドでデータを入力します。ローカルエリアのビジネスを一覧表示するアプリケーションを作成しています(JSONデータを返すAPIから)。
Paulの写真/写真家のクラスに従ってカテゴリを作成しました。クラス自体の作成は問題ではなく、クラスが作成される場所です。
私のアプリケーションは、いくつかのボタンを備えたUIViewControllerで始まり、それぞれが対応するセクションのテーブルビューを開きます(これらはすべて正常に機能します。質問が意味をなすように十分な情報を提供しようとしています)。この質問に基づいたUIManagedDocumentのURLを作成/開くために、ヘルパーメソッドを呼び出します。これは、アプリケーションが実行されるとすぐに呼び出され、すぐに読み込まれます。
PaulのfetchFlickrDataIntoDocumentに非常によく似たメソッドがあります。
[myFunctions arrayOfBusinesses]は、JSONデータを解析し、個々のビジネスを含むNSArrayを返します。
ビジネス作成コードの開始時と終了時にNSLogを使用してコードを実行しました。各ビジネスにはセクションが割り当てられており、作成には0.006秒かかりますが、これらは数百あります。インサートは約2秒かかります。
ヘルパーメソッドはここにあります:
そして、viewDidLoadで呼び出されます:
useDocumentは、self.documentを提供されたドキュメントに設定するだけです。
このコードを変更して、データが別のスレッドに挿入され、ユーザーがボタンをクリックしてセクションを表示できるようにします。データのインポートによってUIがハングすることはありません。
私がこの問題に数日間取り組んできて、ここにある他の同様の質問があっても、それを解決することができなかったので、どんな助けでもありがたいです。他に必要な情報がありましたら、お知らせください。
ありがとうございました
編集:
これまでのところ、この質問は1票の反対票を獲得しています。この質問を改善する方法がある場合、または誰かが私が見つけられなかった質問を知っている場合、方法または場所についてコメントしていただけますか?あなたが反対票を投じる別の理由がある場合は、私は否定性を理解することができず、より良い貢献をする方法を学びたいので、私に知らせてください。
objective-c - UIManagedDocument の URL を取得する
現在、ドキュメント ディレクトリを特定し、その中の URL を取得して、配列プロパティに保存しています。
その後、UIManagedDocument の URL が必要な場合は、配列を参照します。しかし、UIManagedDocument は既にその URL を知っているのではないかと思います。私が見つけた最も近いものはpersistentStoreNameですが、これは永続ストアの名前を設定するために使用されるメソッドです。任意のガイダンスをいただければ幸いです。
objective-c - NSManagedObjectContextバックグラウンドスレッドでの解析と「異なるコンテキスト」の問題
XMLドキュメントを解析し、バックグラウンドキューを使用してそのデータをCoreDataストアに保存しようとしています。iOS5で導入された新しいネストされたUIManagedObjectContextの概念を使用しています。
NSManagedObject会社に新しいカテゴリを追加しました。これは、会社固有のデータの解析を処理します。
これが私がこのメソッドを呼び出す方法[company parseAttributesFrom:xmlStr inManagedObjectContext:self.managedDocument.managedObjectContext];
です。管理対象オブジェクトのコンテキストをパラメーターとしてメソッドに渡しても、問題は変わらないことに注意してください。
コードを実行すると、annualPeriodを会社に設定するとクラッシュし、エラーメッセージNSInvalidArgumentException::が表示されます'Illegal attempt to establish a relationship 'company' between objects in different contexts (source = <IBEstPeriod: ...
。
コードが同じバックグラウンドのアイデアで実行されているときに、エラーがさまざまなコンテキストに関連している必要がある理由を理解するのに苦労しています。助けていただければ幸いです!!
objective-c - NSFetchedResultsControllerとバックグラウンドコンテキストを持つUIManagedDocument
私は以下を機能させようとしています。
APIからフェッチされたデータをテーブルビューに表示しているテーブルビューがあります。その目的のために、私はNSFetchedResultsControllerを使用しています。
次のようなバックグラウンドコンテキストでエンティティを作成します。
これで、新しいデータを取得する(および上記のようなエンティティを挿入/更新する)たびに、NSFetchedResultsControllerが正常に機能しなくなります。特に、私は常に1つのエンティティを更新しています(新しいエンティティを作成していません)が、テーブルビューには2つのエンティティが表示されます。アプリを再起動すると、正しく表示されます。
self.database.managedObjectContextでエンティティの作成([MyAPI createEntities])を実行すると、すべてが正常に機能します。
私が間違っていることについて何か考えはありますか?ここでSOの既存のスレッドを見ると、私はそれを正しい方法で行っていると思います。繰り返しますが、バックグラウンドコンテキスト(ただしdocument.managedObjectContext)でコアデータの保存を行わない場合は、正常に機能します...
core-data - CoreData を使用したゲームのセーブ/ロード システム
Core Data を使用して、ゲーム用の単純なロード/セーブ システムを構築しようとしています。
UIManagedDocument の保存、読み込み、作成は正常に機能します。savegame エンティティの属性値の設定と読み込みも正常に機能します。
問題は、これらの値にアクセスする方法がわからないため、アプリを終了するとこれらの値が失われることです。
(NSNumber *)currentIncome など、savegame エンティティ内に約 200 の属性がありますNSNumber *currentMoney, NSNumber *currentMonth
。単純に見えますよね? これらを関係のある属性にグループ化すると、おそらく 20 個ほどの属性になるでしょう。Core Data Programming Guide から収集したものから、保存した UIManagedDocument の値でエンティティを埋めるために、結果の配列を満たす述語で fetchrequest を実行する必要があります。
ここで最初の疑問が生じます。属性ごとに fetchrequest を実行する必要があるのでしょうか? これは、少数の属性しかない場合、または「対多」な関係がある場合に便利です。私の場合、これは非常に面倒に思えます。
ここで非常に重要なものが欠落している可能性がありますが、次のようなものが必要ですがload my UIManagedDocument and automatically fill my NSManagedModel with the one that was saved in the document's context
、見つかりません。
それが私の 2 番目の質問の出番です: CoreData と UIManagedDocument は、これに対する正しいアプローチでもありますか? 200 個の変数は NSUserDefaults には多すぎます。ただし、NSCoding を使用することは想像できます。後で iCloud セーブゲーム共有を組み込むことは間違いなくあり、UIManagedDocument と CoreData はこれに最適なように思えました。
解決済み: Core Data fetching コード全体を書き直しました (20 行を 10 行程度に減らしました)。述語なしでエンティティに対して fetchrequest を実行すると、明らかにエンティティ全体が返されます。(NSArray *)
fetchedResults が nil (データベースが空) になった場合、管理対象オブジェクト コンテキストに savegame エンティティの新しいインスタンスを挿入します。非 nil になった場合は、 a を実行するだけで(NSManagedObject *)saveGame = [fetchedResults lastObject]
、すべての値が正常にロードされます。
ios - UIManagedDocument: バックグラウンドで保存する方法
NSFetchedResultsController に接続されたテーブル ビューがあり、対応する managedObjectContext は self.myDatabase.managedObjectContext です。
ここで、ユーザーがページを更新するたびに、次のコードを実行します。本質的に、データをロードする新しいスレッドを作成し、MOC セーフ スレッドで新しいデータを更新/保存します。
これは正常に機能します。更新を取得すると、テーブル ビューにすべてが正しく表示されます。唯一の問題は、おそらくメインスレッドで保存/更新を行っているため、UI が応答しないことです。そこで、この変更を加えてバックグラウンド スレッドで実行することを検討しました。
ただし、UI はレスポンシブになりましたが、テーブル ビューで多くの問題が発生します。既存のエントリを更新する代わりに、テーブルに余分なエントリ (存在しないはずの重複) が表示されます。2 つのコンテキストが同期/マージされていないことが原因である可能性があると思いますが、以前の SO の投稿を読んで、backgroundContext で save を呼び出し、メイン MOC で updateChangeCount を呼び出すだけでよいと考えるようになりました。アプリを再起動すると、もう一度更新するまで、すべてが正常に機能します。
誰でも助けてくれる人はいますか。私は文字通り私の髪を引っ張り始めています。
この謎が解けたらビールを差し上げます。