gpt4 book ai didi

ios - 为 Core Data 创建基于 SQL IN() 函数的 NSPredicate

转载 作者:可可西里 更新时间:2023-11-01 04:26:18 26 4
gpt4 key购买 nike

我有一个场景,我必须根据给定列的多个值从 Core Data 中获取多条记录。用于此目的的常见 SQL 查询是

SELECT * FROM suppliers 
WHERE supplier_name in ('IBM', 'Hewlett Packard', 'Microsoft');

我无法弄清楚如何为此目的使用 native IN() 函数。

目前我创建 NSPredicate 的方式似乎是多余的,如下所示。

NSMutableArray *predicateArray = [NSMutableArray array];
[skus enumerateObjectsUsingBlock:^(NSString *sku, NSUInteger idx, BOOL *stop) {
[predicateArray addObject:
[NSString stringWithFormat:@"(AudioSKU == \"%@\")", sku]];
}];

NSString *predicateString = [predicateArray
componentsJoinedByString:@" OR "];
NSPredicate *predicate = [NSPredicate
predicateWithFormat:predicateString];

是否有正确的方法使用 NSPredciate 或 NSExpression 来使用 SQL 的 IN 函数?请赐教。

最佳答案

NSPredicate 中也有类似的功能

NSArray *skus = @[];
NSPredicate *predicate = [NSPredicate
predicateWithFormat:@"AudioSKU IN %@",skus];

而且您不能像对待普通字符串一样对待谓词字符串。您不能形成一个字符串数组并将它们用于过滤。如果有多个连接,请使用 NSCompoundPredicate

很好的引用 Using NSPredicate to filter Data

关于ios - 为 Core Data 创建基于 SQL IN() 函数的 NSPredicate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17691593/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com