将 NSArray 传递到领域查询对象位置



我在项目中使用 realm 来存储对象,但在这种情况下,我需要一个特定的查询。我有一个充满 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 网站上提供的文档,您可以找到:

请参阅 Apple 的谓词编程指南,了解有关构建谓词的更多信息。Realm 支持许多常见的谓词:

包含操作数 IN 例如名称 IN {'Lisa', 'Spike', 'Hachi'} 零比较 ==, !=, 例如 [公司对象在哪里:@"首席执行官 == 零"]。 请注意,这仅适用于具有关系的对象,例如这里, 首席执行官是公司模型上的财产。

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

最新更新