NSF*_*NSF 4 objective-c nsarray nsset nspredicate ios
我有两个不同类型的自定义对象的2个NSArrays.
对象A属性:ID:名称:作者:
对象B属性:bookID:value:终止符:
我需要过滤一个类型为"A"的对象数组,其ID值等于包含"B"类型对象的第二个数组的任何对象的bookID值.
我试图通过将数组转换为集合来使用intersectSet:方法,但由于这两个对象的类型不同,所以没有任何反应.
什么是最有效的过滤方式?我可以指定在进行交叉时要查看的属性吗?
Lar*_*rme 12
这是一个示例代码示例:
NSDictionary *dictionaryA1 = @{@"ID":@"1", @"Name":@"NameA1", @"Author":@"AuthorA1"};
NSDictionary *dictionaryA2 = @{@"ID":@"2", @"Name":@"NameA2", @"Author":@"AuthorA2"};
NSDictionary *dictionaryA3 = @{@"ID":@"3", @"Name":@"NameA3", @"Author":@"AuthorA3"};
NSDictionary *dictionaryB0 = @{@"bookID":@"0", @"Name":@"NameB0", @"Author":@"AuthorB0"};
NSDictionary *dictionaryB1 = @{@"bookID":@"1", @"Name":@"NameB1", @"Author":@"AuthorB1"};
NSDictionary *dictionaryB3 = @{@"bookID":@"3", @"Name":@"NameB3", @"Author":@"AuthorB3"};
NSArray *arrayA = @[dictionaryA1, dictionaryA2, dictionaryA3];
NSArray *arrayB = @[dictionaryB0, dictionaryB1, dictionaryB3];
NSArray *intersectionWithBookID = [arrayA filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"ID IN %@", [arrayB valueForKey:@"bookID"]]];
NSLog(@"intersectionWithBookID: %@", intersectionWithBookID);
Run Code Online (Sandbox Code Playgroud)
输出:
intersectionWithBookID: (
{
Author = AuthorA1;
ID = 1;
Name = NameA1;
},
{
Author = AuthorA3;
ID = 3;
Name = NameA3;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1213 次 |
| 最近记录: |