objective c - SearchBar programming in iPhone/iPad -
i have data this...(all data comes .plist file...)
searching array - ( { firstname = "ramesh"; lastname = "bean"; empcode = 1001; }, { firstname = "rohan"; lastname = "rathor"; empcode = 102; }, { firstname = "priya"; lastname = "malhotra"; empcode = 103; }, { firstname = "mukesh"; lastname = "sen"; empcode = 104; }, { firstname = "priya"; lastname = "datta"; empcode = 105; } )
i want implement search data array on basis of firstname (key).
i able search data "firstname(key)"
but after filtering data suppose clicked row( in data) displayed in tableview. navigate me new-controller information of particular employee (like: firstname,lastname,empcode).
how can information?
as gone through search sample codes.
here search code...
nsstring *searchtext = searchbar.text; nsmutablearray *searcharray = [[nsmutablearray alloc] init]; nsinteger totalnoofrecords=[self.searchtabledatasource count]; (int i=0;i<totalnoofrecords;i++) { nsdictionary *dictionary = [self.searchtabledatasource objectatindex:i]; nsarray *array = [dictionary objectforkey:@"firstname"]; [searcharray addobject:array]; } (nsstring *stemp in searcharray) { nsrange titleresultsrange = [stemp rangeofstring:searchtext options:nscaseinsensitivesearch]; if (titleresultsrange.length > 0) { [copylistofitems addobject:stemp]; } }
how can improve code?....please guide me... [searcharray release]; searcharray = nil;
how maintain "keys(firstname,lastname,empcode)" in searcharray please me out? thanks...
use nspredicate.
searcharray plist in nsarray. make new searcharray2 searcharray , filter using nspredicate.
searcharray2 = [[nsmutablearray alloc] initwitharray:searchingarray copyitems:yes]; nspredicate *predicate = [nspredicate predicatewithformat:@"firstname in %@", searchtabledatasource]; [searchingarray2 filterusingpredicate:predicate];
so code should this:
temparray = [[nsarray alloc] initwithcontentsoffile:[[nsbundle mainbundle] pathforresource:@"1" oftype:@"plist"]]; searcharray = [temparray valueforkey:@"firstname"]; nsstring *searchtext = searchbar.text; nsmutablearray *searchresults; (nsstring *stemp in searcharray) { nscomparisonresult result = [searchtext compare:searchtext options:(nscaseinsensitivesearch) range:nsmakerange(0, [searchtext length])]; if (result == nsorderedsame) { [searchresults addobject:stemp]; } searcharray2 = [[nsmutablearray alloc] initwitharray:searcharray copyitems:yes]; nspredicate *predicate = [nspredicate predicatewithformat:@"firstname in %@", searchresults]; [searcharray2 filterusingpredicate:predicate]; }
then post searcharray2 nslog
nslog(@"searcharray2: %@", searcharray2)
, tell me if satisfied results:)
Comments
Post a Comment