Creating NSPredicate based functions SQL IN () for master data

I have a scenario where I need to get some records from a Core Data based on multiple values โ€‹โ€‹of this column. A general SQL query for this purpose would be

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

I could not figure out how I'm going to use built-in function IN() for this purpose.

A method of creating NSPredicate currently seems unnecessary and is as follows.

 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]; ; 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]; sku, NSUInteger idx, BOOL * stop) { 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]; == \"% @ \ ")", sku]]; 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]; 

Can I use NSPredciate or NSExpression To use IN the SQL? Please enlighten me.

+4
source share
1 answer

In NSPredicate have a similar function

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

And also you can not handle the predicate strings as normal lines. You cannot form an array of strings and use them to filter. If there are multiple connections, use NSCompoundPredicate .

A good reference Use NSPredicate to filter data

+7
source

Source: https://habr.com/ru/post/1491777/


All Articles