2017-07-04 57 views
1
NSPredicate *predicate3 = [NSPredicate predicateWithFormat:@"ANY %K.%K.%K CONTAINS[c] %@",@"Assets",@"TFloorAssets",@"AssetNo",strSearch]; 

NSArray *filteredPendingList = [NSMutableArray arrayWithArray:[arrOfAllAssetsCategory filteredArrayUsingPredicate:predicate3]]; 

我正在使用上述类型的代码进行多级搜索?如何过滤多级数组来搜索字符串?

回答

-1

使用 “复合谓语” 像下面

NSPredicate *predicate = [NSCompoundPredicate orPredicateWithSubpredicates: 
          @[predicateEventsByAsset, predicateEventsByFloorAsset ,predicateEventsByAssetNo]]; 
self.filteredEventsArray = [self.eventsArray filteredArrayUsingPredicate:predicate]; 
+0

我可以知道downvote的原因吗? –

+0

这个谓词是“Assets contains [c]%@ OR TFloorAssets contains [c]%@ OR AssetNo [c] contains%@”)。问题是如何做“ANY Assets.TFloorAssets.AssetNo contains [c]%@”。 – Willeke

2

使用collection operator

[NSPredicate predicateWithFormat:@"ANY [email protected] contains[c] %@", strSearch] 

还是一个subquery

[[NSPredicate predicateWithFormat:@"SUBQUERY(Assets, $asset, ANY $asset.TFloorAssets.AssetNo contains[c] %@)[email protected] > 0", strSearch] 

或两子查询:

[NSPredicate predicateWithFormat:@"SUBQUERY(Assets, $asset, SUBQUERY($asset.TFloorAssets, $tFloorAsset, $tFloorAsset.AssetNo contains[c] %@)[email protected] > 0)[email protected] > 0", strSearch] 
+0

为此我们使用@unionOfArrays或$?你能简单地建议我还是提供一个链接,我可以阅读这些东西? –

+1

我添加了答案的链接。 – Willeke

+0

thnks dude @Willeke –