[解決済み] 特定のObject IDからCore Dataオブジェクトを取得するには?
質問
以下のコードでCore DataのオブジェクトのIDを簡単に取得することができます。
NSManagedObjectID *moID = [managedObject objectID];
しかし、特定のオブジェクトIDを与えて、コアデータストアからオブジェクトを取得する方法はあるのでしょうか?私は、以下のようにNSFetchRequestを使用することでこれを行うことができることを知っています。
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Document" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(objectID = %@)", myObjectID];
[fetchRequest setPredicate:predicate];
しかし、私はそれ自身のフェッチ要求を開始しない方法でそれをしたいです。何かアイデアはありますか?
どのように解決するのですか?
あなたがしたい。
-(NSManagedObject *)existingObjectWithID:(NSManagedObjectID *)objectID
error:(NSError **)error
ストアからそのIDを持つオブジェクトを取得し、存在しない場合はnilを取得します。
(注意: NSManagedObjectContextには、似たような名前のメソッドが2つあり、私を混乱させました。それらを整理するために、他の2つのメソッドが何をするのかを説明します。
-(NSManagedObject *)objectWithID:(NSManagedObjectID *)objectID
...は与えられた objectID を持つ fault オブジェクトを作成します。
であろうとなかろうと
そのようなオブジェクトが実際にストアに存在するかどうかに関わらず。存在しない場合、NSManagedObjectContextの
insertObject:
. 私が見つけた唯一の用途は、ObjectID を保持しながらストアからストアへオブジェクトをコピーすることです。
-(NSManagedObject *)objectRegisteredForID:(NSManagedObjectID *)objectID
...は、そのIDを持つオブジェクトを返します。 もし このmanagedObjectContextによってストアから取得されている場合、そのIDを持つオブジェクトを返します。もし、このメソッドが何の役に立つか知っている人がいたら、コメントください)。
[eta.:最初のメソッドと他の2つのメソッドのもう一つの重要な違いは、以下の通りです。
existingObjectWithID:error:
は決してフォールトを返さないということです。常にオブジェクト全体をフェッチしてくれます。これを避けようとする場合 (たとえば、大きな blob プロパティを持つフェッチにコストのかかるオブジェクトを扱う場合) は、objectWithID:
あるいは
objectRegisteredForID:
を使うか、適切に設定されたフェッチリクエストを使うかです]。
関連
-
[解決済み】Git リポジトリから .DS_Store ファイルを削除するには?
-
[解決済み] Xcodeにおけるバージョンとビルドの比較
-
[解決済み] UITableViewCell、スワイプ時に削除ボタンを表示させる
-
[解決済み] テキストフィールドを移動する方法(次へボタン/完了ボタン)
-
[解決済み] UITextFieldの最大文字数を設定します。
-
[解決済み] アプリのプレビュー用にiOSシミュレータのビデオをキャプチャー
-
[解決済み] CocoaPodsの最新バージョンにアップデートしますか?
-
[解決済み] Swift 3, 4, 5 で dispatch_after GCD を書くにはどうしたらいいですか?
-
[解決済み] UIViewの角丸とドロップシャドウ?
-
[解決済み] Cocoapods警告 - CocoaPodsがプロジェクトの基本構成を設定しなかった理由は、プロジェクトに既にカスタム構成が設定されているためです。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Objective-Cで、ある文字列が他の文字列を含んでいるかどうかを調べるにはどうすればよいですか?
-
[解決済み] 制約条件の変更をアニメーションで表現するには?
-
[解決済み] iOS7でスタイルUITableViewStyleGroupedを持つUITableViewの上部に余分なパディングがあるのはなぜですか?
-
[解決済み] UITableViewCell、スワイプ時に削除ボタンを表示させる
-
[解決済み] 「GCC使用時に「Xcode/iOSのライセンスに同意するには管理者権限が必要です。rootでsudoを使用して再実行してください。
-
[解決済み] Swiftを使用してアプリのバージョンとビルド番号を取得するにはどうすればよいですか?
-
[解決済み] iOS - UITextFieldの外側をタッチするとキーボードが外れる。
-
[解決済み] SwiftでURLから画像を読み込む/ダウンロードする
-
[解決済み] iOS 7でステータスバーとナビゲーションバーがビューの境界を越えて表示される
-
[解決済み] Swift 3でディスパッチキューを作成する方法