配列内の値と一致する行を取得するために NSPredicate を記述する方法は? 例えば:
[NSPredicate predicateWithFormat:@"UserName IN %@",UserIDArray];
UserIDArray
ユーザーの ID が含まれている場合、この配列の値と一致するユーザー名を取得するにはどうすればよいですか?
配列内の値と一致する行を取得するために NSPredicate を記述する方法は? 例えば:
[NSPredicate predicateWithFormat:@"UserName IN %@",UserIDArray];
UserIDArray
ユーザーの ID が含まれている場合、この配列の値と一致するユーザー名を取得するにはどうすればよいですか?
このアドバイスから始めましょう。コア データは SQL ではありません。エンティティはテーブルではありません。オブジェクトは行ではありません。列は属性/プロパティではありません。Core Data はオブジェクト グラフ管理システムであり、オブジェクト グラフを保持する場合と保持しない場合があり、バックグラウンドで SQL を使用する場合としない場合があります。Core Data を SQL 用語で考えようとすると、Core Data を完全に誤解してしまい、多くの悲しみと時間の浪費につながります。
Core Data はオブジェクトに基づいているため、フェッチを行うと、オブジェクトの配列が返されます。特定の値を見つけるには、それらのオブジェクトのそれぞれの属性の値を照会します。
次のエンティティがあるとします。
User{
userName:string
userID:string
}
...そして、 userID 文字列の配列に対応する userName を持つすべてのユーザーを見つけたいとします。NSFetchRequest を作成し、そのエンティティを「ユーザー」に設定します。次に、次のような述語を使用します。
[NSPredicate predicateWithFormat:@"userID IN %@",arrayOfUserIDs];
フェッチは、エンティティの属性名キーで構成された NSManagedObjects (またはサブクラス) の配列を返しますUser
。配列内の各管理対象オブジェクトの属性の値を見つけるには、userName
次のようにオブジェクトにその属性の値を要求します。
NSString *aUserName=[aUserEntityObject valueForKey:@"userName"];
SQL や類似のデータベース システムについて知っていることはすべて忘れてください。Core Data は真の意味でのデータベースではないため、そのような用語で考えようとすると混乱するだけです。Core Data はすべてオブジェクトに関するものです。