IOS NSobject 深度 child 使用 NSpredicate 过滤
IOS NSobject deep child filtering with NSpredicate
matsDataObject *notebook1 = [matsDataObject dataObjectWithName:@"Notebook 1" children:nil];
matsDataObject *notebook2 = [matsDataObject dataObjectWithName:@"Notebook 2" children:nil];
matsDataObject *computer1 = [matsDataObject dataObjectWithName:@"Computer 1"
children:[NSArray arrayWithObjects:notebook1, notebook2, nil]];
matsDataObject *computer2 = [matsDataObject dataObjectWithName:@"Computer 2" children:nil];
matsDataObject *computer3 = [matsDataObject dataObjectWithName:@"Computer 3" children:nil];
matsDataObject *computer = [matsDataObject dataObjectWithName:@"Computers"
children:[NSArray arrayWithObjects:computer1, computer2, computer3, nil]];
这是我的 NSobject :
计算机名称为 "Computers" 和 children "NSarray with values Computer 1, Computer 2 and Computer 3"
计算机 1 的名称为 "Computer 1" 和 children "NSarray with values Notebook 1 and Notebook 2"
通过 NSPredicate 我想在搜索 "Notebook 1"
时得到 parent object "Computers"
我尝试了什么:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(children, $child, $child.children.name CONTAINS[cd] %@).@count > 0",searchText];
和
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY children.children.name contains[cd] %@",searchText];
关闭此问题。答案来自Willeke.
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY children.@distinctUnionOfArrays.children.name contains[cd] %@",searchText];
matsDataObject *notebook1 = [matsDataObject dataObjectWithName:@"Notebook 1" children:nil];
matsDataObject *notebook2 = [matsDataObject dataObjectWithName:@"Notebook 2" children:nil];
matsDataObject *computer1 = [matsDataObject dataObjectWithName:@"Computer 1"
children:[NSArray arrayWithObjects:notebook1, notebook2, nil]];
matsDataObject *computer2 = [matsDataObject dataObjectWithName:@"Computer 2" children:nil];
matsDataObject *computer3 = [matsDataObject dataObjectWithName:@"Computer 3" children:nil];
matsDataObject *computer = [matsDataObject dataObjectWithName:@"Computers"
children:[NSArray arrayWithObjects:computer1, computer2, computer3, nil]];
这是我的 NSobject :
计算机名称为 "Computers" 和 children "NSarray with values Computer 1, Computer 2 and Computer 3"
计算机 1 的名称为 "Computer 1" 和 children "NSarray with values Notebook 1 and Notebook 2"
通过 NSPredicate 我想在搜索 "Notebook 1"
时得到 parent object "Computers"我尝试了什么:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(children, $child, $child.children.name CONTAINS[cd] %@).@count > 0",searchText];
和
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY children.children.name contains[cd] %@",searchText];
关闭此问题。答案来自Willeke.
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY children.@distinctUnionOfArrays.children.name contains[cd] %@",searchText];