将 NSArray 传递到领域查询 objectsWhere
Passing an NSArray into a realm query objectsWhere
我在我的项目中使用领域来存储对象,但在这种情况下,我需要一个特定的查询。我有一个充满 ID 的数组,经过一些操作后,我需要获取具有这些 ID 之一和其他特定条件的所有对象。
目前我需要做这个查询,我有这个数据(ID 数组是动态填充的):
NSArray *IDs = @[@(1203), @(2421), @(3034), @(2024)];
NSString *predicateString = @"isSongFromCatalog = 1 && researchScore > 0";
RLMResults *result = [KFSong objectsWithPredicate:[NSPredicate predicateWithFormat:predicateString]];
那么,如何在我的谓词中添加条件以仅获取具有此数组中包含的 ID 的对象?
在SQL中,它会等同于这样一个查询数组的请求:
SELECT * FROM myTable WHERE ID IN (IDs);
我已经尝试构建一个包含所有 ID 的谓词,但这个解决方案非常昂贵且没有优化......我也尝试使用关键字 ANY
但我没有 RLMArray 来做吧。所以,我 运行 没主意了。有没有等同于IN
的东西?
从 Realm 网站上提供的文档中,您可以找到:
See Apple’s Predicates Programming Guide for more information about building predicates. Realm supports many common predicates:
The containment operand IN such as name IN {‘Lisa’, ‘Spike’, ‘Hachi’}
Nil comparisons ==, !=, e.g. [Company objectsWhere:@”ceo == nil”].
Note this only works for objects with relationships, for example here,
ceo is a property on the Company model.
这就是您一直在寻找的吗?
我在我的项目中使用领域来存储对象,但在这种情况下,我需要一个特定的查询。我有一个充满 ID 的数组,经过一些操作后,我需要获取具有这些 ID 之一和其他特定条件的所有对象。
目前我需要做这个查询,我有这个数据(ID 数组是动态填充的):
NSArray *IDs = @[@(1203), @(2421), @(3034), @(2024)];
NSString *predicateString = @"isSongFromCatalog = 1 && researchScore > 0";
RLMResults *result = [KFSong objectsWithPredicate:[NSPredicate predicateWithFormat:predicateString]];
那么,如何在我的谓词中添加条件以仅获取具有此数组中包含的 ID 的对象?
在SQL中,它会等同于这样一个查询数组的请求:
SELECT * FROM myTable WHERE ID IN (IDs);
我已经尝试构建一个包含所有 ID 的谓词,但这个解决方案非常昂贵且没有优化......我也尝试使用关键字 ANY
但我没有 RLMArray 来做吧。所以,我 运行 没主意了。有没有等同于IN
的东西?
从 Realm 网站上提供的文档中,您可以找到:
See Apple’s Predicates Programming Guide for more information about building predicates. Realm supports many common predicates:
The containment operand IN such as name IN {‘Lisa’, ‘Spike’, ‘Hachi’} Nil comparisons ==, !=, e.g. [Company objectsWhere:@”ceo == nil”]. Note this only works for objects with relationships, for example here, ceo is a property on the Company model.
这就是您一直在寻找的吗?