2015-12-15 41 views
1
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的:IOS NSObject的深層孩子NSpredicate

計算機公司名稱爲 「計算機」 和兒童 「的NSArray與價值觀電腦1,電腦2和計算機3」

電腦1具有名稱爲「電腦1」和兒童「的NSArray與價值觀筆記本電腦1和2筆記本」

海槽NSpredicate我想要得到的父對象「計算機」,當我搜索「筆記本電腦1」

我的嘗試:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(children, $child, $child.children.name CONTAINS[cd] %@)[email protected] > 0",searchText]; 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY children.children.name contains[cd] %@",searchText]; 
+0

嘗試'孩子。@ distinctUnionOfArrays.children.name包含[CD]%@'或'SUBQUERY(小孩,兒童$,$任何CONTAINS child.children.name [CD]%@)。@計> 0'。 – Willeke

+0

是的是的!它的作品,非常感謝你。應該早些發佈這個問題,浪費了2天時間。 –

回答

0

要關閉這個問題。答案來自Willeke。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY [email protected] contains[cd] %@",searchText];