問題タブ [nsfetchrequest]
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.
iphone - コアデータ、NSFetchRequestがNSDictionaryResultTypeを返すときにNSManagedObjectのObjectIdを取得する方法は?
NSFetchRequest
オブジェクトのプロパティをで返すがありますNSDictionaryResultType
。このディクショナリ内でオブジェクトのObjectIdを取得することもできますか?NSManagedObjectResultType
それ以外の場合は、返されるアイテムの数が多い場合に返されるタイプがはるかに遅いクエリを実行する必要があります。
iphone - フェッチ要求中にコアデータにTo-Many関係の「多くの」部分をソートさせることは可能ですか?
Core Dataを使用して適切な量の情報をキャッシュしており、管理対象オブジェクト間にTo-Many関係を設定しています。当然、私はNSFetchRequestを使用して、その関係の特異な側の配列をフェッチします。ただし、リレーションシップの「多」側を使用してUITableViewにデータを入力し、データをプルするときにアルファベット順に並べ替えたいと思います。
よくわからない場合は、次の例をご覧ください。
「employee」と「boss」はどちらもTo-Many関係のNSManagedObjectsです。各ボスには多くの従業員がいますが、従業員には1人のボスしかいません。ボスの配列を取得した後、従業員のリストを含むUITableViewControllerをプッシュします。NSFetchRequest中に従業員を事前に並べ替えて、表示しやすくしたいと思います。これは可能ですか、そしてどうすればそれを行うことができますか?
core-data - NSPredicate オブジェクトをシリアル化するには?
URL にシリアル化する目的で NSPredicate オブジェクトを検査する方法はありますか? リモートでデータを取得しようとしており、述語オブジェクトを、サーバーが理解できるクエリ文字列パラメーターを持つ URL に変換する必要があります。
これは、WWDC 2010 で行われた「Building a Server Driven User EXperience」と呼ばれる講演に触発されたもので、講演者は Core-Data とサーバー バックエンドの使用について話しています。セッションのビデオとスライドをたどりましたが、連載のポイントで立ち往生しています。たとえば、Person
オブジェクトがあり、名前が「John」であるすべての人を取得しようとしています。メソッドをオーバーライドするNSManagedObjectContext
calledのサブクラスを使用しており、代わりに呼び出しをサーバーに送信することになっています。フェッチ リクエストは次のように作成されます (省略された重要でない部分):RemoteManagedObjectContext
executeFetchRequest
のカスタム サブクラス内でNSManagedObjectContext
、フェッチ要求をサーバーに適したクエリ文字列パラメーターにシリアル化するにはどうすればよいでしょうか。したがって、上記のフェッチ リクエストの場合、対応する URL は次のようになります。
返される述語の文字列表現を取得することが可能です。
パラメータを取得するために解析できることname
、およびendpoint
. しかし、文字列を解析せずにそれを行うことは可能ですか? RemoteManagedObjectContext
クラスの部分的な実装を次に示します。
iphone - コア データ: 詳細ビューに移動するとフェッチがクラッシュする
私のアプリはマルチビューです。マスター ビューは、Core Data のものを含む詳細ビューにつながります。マスター ビューでボタンを押して詳細ビューに移動しようとすると、次のクラッシュが発生します。
別のプロジェクトでは Core Data コードが正常に動作していましたが、このプロジェクトではクラッシュします。コア データのないビューは問題ありません
どうすればこれを修正できますか? どんな助けでも大歓迎です
アップデート
フェッチコードは次のとおりです。
objective-c - -[NSCFNumberカウント]:認識されないセレクター
Appleのサンプルコードに正確に従ったコアデータコードがいくつかあります(特定の関数の例を満たす属性値の取得)。フィールドの最大値を取得するために使用しているので、そのエンティティタイプの次のオブジェクトを挿入するときにインクリメントできます。
NSXMLStoreType
ストアタイプをからに切り替えるまで、コードをまったく機能させることができませんでしたNSSQLiteStoreType
。その後、突然すべてが機能しているように見えました。ただし、そうではありません。より高いオブジェクトを挿入した場合でも、常に同じ値が返されることに気付きました。しかし、終了して再度開いた後(したがって、データは永続化されて読み戻された後)、新しい挿入で更新されます。
それで、私は各挿入の後にコミットして保存し始めました。ただし、最初の「自動保存」の後、以下のエラーが発生します(2回続けて)。
-[NSCFNumberカウント]:認識されないセレクターがインスタンス0x100506a20に送信されました
これは、フェッチ要求を1回実行すると(2回続けて)発生します。
アップデート
コードをZombiesインストゥルメントで実行し、エラーが発生しているオブジェクトを確認することができました。malloc
それを割り当てるために実行される呼び出しは次のとおり-[NSUserDefaults(NSUserDefaults) initWithUser:]
です。自分のデフォルトを設定していないので、これがどのオブジェクトであるかわかりません。
アップデート2
私はすべてのコードで「リリース」を検索し、静的アナライザーが文句を言わなかったことをrelease
すべてコメントアウトしました。autorelease
まだエラーが発生しました。私は自分のコードの最後のrelease
/をコメントアウトするところまで行って、それでもそれを手に入れました。autorelease
今では、自分のコードが過剰にリリースされていないことをかなり確信しています。
アップデート3
この投稿にも同じ問題があるようですが、彼の解決策は意味がありません。彼は結果タイプをからNSDictionaryResultType
に変更しましたがNSManagedObjectResultType
、これは誤った結果を生成します。単一の値(max
私が探している値)を返す代わりに、管理対象オブジェクトコンテキスト内のエンティティクラスのすべてのオブジェクトを返します。
スタックトレースの最上位レベルは次のとおりです(例外でブレークした場合、初めて):
私はこの質問をウェブ上の他の多くのフォーラムで見ましたが、誰も実行可能な解決策を提供していません。好評につき、以下に独自のコードを追加しました。少し説明すると、私のエンティティの名前はBox
であり、値を取得しようとしているプロパティは属性である「sortOrder」Int 32
です。
objective-c - NSFetchRequest の関数カウントの式は、通常のフェッチよりも 1 少ない値を返します
フェッチ リクエストで NSExpression を使用する最初の試みでは、通常のフェッチ リクエストを使用した場合とは一貫して異なる結果が得られます。
MO「サブジェクト」はMO「ブック」と対多の関係にあり、逆は対1です。
これは私が使用している NSExpression fetchRequest です:
(アイデアは、ユーザーが選択したサブジェクトを削除することを選択した場合に、カスケード ルールを介して削除されるブックの数をユーザーに通知する確認パネルをユーザーに提示することです — この時点でブック MO を失敗させることはありません)。
そして、これは私がテストとして使用している単純な fetchRequest です:
NSExpression fetchRequest が n のカウントを返す場合、単純な fetchRequest は n + 1 のカウントを返します。
fetchRequests 自体が何らかの形でデータを変更している可能性があると考えて、別の順序で実行してみましたが、結果は同じでした。
式を使用したリクエストは、まだ保存されていない MO をスキップするのでしょうか? いいえ。式リクエストと通常のリクエストのギャップが広がるかどうかを確認するために、多数の新しい「Book」MO を作成するテストを実行しました。まさにワンオフのままでした。
私が間違っていることは何か分かりますか?
iphone - CoreData - subEntity からの一意の値....?
iPhone CoreData funky fetch-request: 製品の Unique-CategoryCodes の配列を取得する関数を構築したい エンティティ "製品" があり、フィールド (プロパティ) カテゴリがあります。もちろん、Category は Categories エンティティとの関係です。
これは私の機能の場合:
}
MyResult: 2010-12-10 05:55:33.683 iApp[3453:307] -[ShoppingHelper uniqueCategoriesWithQuery:] [1193 行] ( { カテゴリ = "0x495a200 "; }, { カテゴリ = "0x4959ce0 "; } )
コードはうまく機能しますが、結果をまったく使用できません。私は自分のカテゴリを持っています...しかし、NSStringsの代わりにID'..それをどのように消費するのですか?
多分私は使用する必要があります: [request setPropertiesToFetch:[NSArray arrayWithObject:[entityProperties objectForKey:@"Categories.Code"]]];
Distinct NSDictionary で NSStrings を取得するには?
また
ID でカテゴリを検索 - 方法は?
core-data - Fetch Requests との基本的な関係の設定
Core Data の 2 つのエンティティとの基本的な関係を設定したいと考えていますが、関係が保存されていないか、適切に機能していません。その理由がわかりません。
2 つのエンティティはCharacter
とAvatar
であり、1 対 1 の関係です。キャラクターは 1 つのアバターを持つことができます。厳密には「1つのアバターを複数のキャラクターが所有できる」はずですが、それについては後述します。
キャラクターを追加してアバターを割り当てたい。
Core Data には既に 10 体のアバターと 1 体のキャラクターがあり、どちらも Terminal と SQLite で確認済みです。
問題は、「名前でアバターを見つけて、キャラクターとの関係を保存する」という問題を抱えていることです。
ここのところ、
「frqAvatarWithName」というフェッチリクエストを設定しました。ここで、述語は次の構造を持っています。
[見積もり]
名前 == $AVATAR_NAME
[/見積もり]
そうです。特定の名前のアバターを見つけることができます。そして、キャラクターとの関係を築くことができます。
問題 1:クエリを実行できますが、レコードの数が表示されません。
デバッグ モードでEXC_BAD_ACCESS
エラーが発生し、フェッチ リクエスト テンプレートの処理にまでさかのぼって追跡しました。つまり、これはエラーであるか、間違ったことをしたに違いありません。
問題 2:この「基本的な」関係を適切に設定できているかどうかさえわかりません。
[コード]
[/コード]
iphone - CoreDataのフェッチを高速化
これはiOS上にあります。
約350000個のオブジェクトを持つコアデータベースがあります。オブジェクト(製品)には、「バーコード」と「指定」の2つのプロパティがあります。ユーザーは「バーコード」を検索してオブジェクトを検索でき、「指定」が返されます。遅いことを除いて、すべてが正常に機能しています。私が使用するコードは次のとおりです。
オブジェクトを1つだけフェッチしたいのですが、それを高速化する方法はありますか?
起動時にすべてのオブジェクトを配列にロードすると、アプリの起動が非常に遅くなり、大量のRAMが使用されます。
前もって感謝します!
編集:[fetch setFetchLimit:1]を追加しました; 少しスピードアップします。ただし、オブジェクトがデータベース内で下がるほど、速度は遅くなります。
iphone - コア データ: 特定のオブジェクトの対多関係にあるすべてのエンティティを取得しますか?
私の iPhone アプリケーションでは、2 つのエンティティ ( ItemとProperty )を持つ単純な Core Data Model を使用しています。
アイテム
名
のプロパティ
プロパティ
名
値
項目
Itemには 1 つの属性 (name) と 1 つの一対多の関係 ( properties ) があります。その逆の関係はitemです。プロパティには、逆の関係にある 2 つの属性があります。
ここで、データを 2 つのレベルのテーブル ビューに表示したいと考えています。最初のものはすべてのアイテムをリストします。1 つの行が選択されると、新しい UITableViewController が UINavigationController のスタックにプッシュされます。新しい UITableView は、選択した項目のすべてのプロパティ (つまり、それらの名前) を表示することになっています。
これを実現するためNSFetchedResultsController
に、インスタンス変数に格納された を使用します。最初のレベルでは、NSFetchedResultsController を次のように設定すると、すべてが正常に機能します。
ただし、第 2 レベルの UITableView では、何か間違っているようです。同様の方法で fetchedresultsController を実装しました。
今、それは奇妙になっています。上記のNSLog
ステートメントは、選択したアイテムの正しい数のプロパティを返します。ただし、 UITableViewDelegate メソッドは、プロパティがないことを示しています。
同じ実装は、最初のレベルでうまく機能します。
それはさらに奇妙になっています。プロパティを追加するために何らかの UI を実装しました。を介して新しいPropertyインスタンスを作成Property *p = [NSEntityDescription insertNewObjectForEntityForName:@"Property" inManagedObjectContext:self.moContext];
し、関係を設定して を呼び出します[self.moContext save:&error]
。これerror
はまだ機能しているようで、オブジェクトが保存されます ( Itemインスタンスをnil
ログに記録すると、プロパティの数を確認できます。上記を参照してください)。ただし、デリゲート メソッドは起動されません。これは、fetchRequest(Controller) がめちゃくちゃになっている可能性があるため、私には思えます。
何か案は?2 番目のフェッチ要求を台無しにしましたか? これは、特定のインスタンスの対多関係にあるすべてのエンティティを取得する正しい方法ですか?