ios - Filter NSMutableArray on the base of filtering another NSMutableArray -
i have 3 nsmutablearray
s of identical size. "linked" means corresponding index have related each other.
tabledata = [nsmutablearray arraywithobjects:@"egg benedict", @"mushroom risotto", @"full breakfast", nil] thumbnails = [nsmutablearray arraywithobjects:@"egg_benedict.jpg", @"mushroom_risotto.jpg", @"full_breakfast.jpg",nil] preptime = [nsmutablearray arraywithobjects:@"10min", @"15min", @"8min",nil]
this comes tutorial i'm playing on.
i'm filtering tabledata array this:
nspredicate *resultpredicate = [nspredicate predicatewithformat:@"self contains[cd] %@", searchtext]; searchresultsdata = [[tabledata filteredarrayusingpredicate:resultpredicate] mutablecopy];
where searchtext
string containing filter (for example "egg"). works great, mean have correct filtering. (searchresultsdata
nsmutablearray) need filter other 2 nsmutablearray
s on basis of result got nspredicate
above.
so created other 2 nsmutablearray
s called "searchresultthumbnails" , "searchresultpreptime
". i'm expecting this: if filter using word "egg" want first element containing "egg" "tabledata
" array (in case 1 element) , correspondent element @ index in thumbnails , preptime arrays.
so after filtering "egg" result should be:
searchresultdata = "egg" searchresultthumbnails = "egg_benedict.jpg" searchresultpreptime = "10min"
thank help.
believing "they "linked" means corresponding index have related each other." situation
nspredicate *resultpredicate = [nspredicate predicatewithformat:@"self contains[cd] %@", searchtext]; searchresultsdata = [[tabledata filteredarrayusingpredicate:resultpredicate] mutablecopy]; nsstring *searchedtext = [searchresultsdata objectatindex:0]; nsinteger index = [tabledata indexofobject:searchedtext]; //if searchedtext = "egg" nsstring *thumb = [thumbnails objectatindex:index]; nsstring *prep= [preptime objectatindex:index];
but not better way this.
you got couple of options can use custom class might have properties item, thumbnail, preptime.
you can use array of dictionaries similar following format,
array = ( { searchresultdata = "egg" searchresultthumbnails = "egg_benedict.jpg" searchresultpreptime = "10min" } { searchresultdata = "someitem" searchresultthumbnails = "some.jpg" searchresultpreptime = "10min" } )
Comments
Post a Comment