将 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.

这就是您一直在寻找的吗?