2015-01-19 1 views
1

Извините, если вы спросите об этом, но я новичок в этом. Привет у меня есть NSMutableArray, который содержит данные, как показано ниже:Фильтр в UITableVewController с несколькими объектами

{ 
Code = MCP3441G; 
"Needle Description" = "1/2 Circle Round Body MH"; 
"Needle Dimension" = "31 MM"; 
"No. of foils per box" = 12; 
"Per box maximum retail price" = 7440; 
"Per box price to retailers & hospitals" = 5474; 
Size = "2/0"; 
"Suture type and length" = "MONOCRYL monofilament 70 CM Violet"; 
nid = 86; 
}, 
{ 
Code = NW1641; 
"Needle Description" = "1/2 Circle Round Body"; 
"Needle Dimension" = "30 MM"; 
"No. of foils per box" = 12; 
"Per box maximum retail price" = 4800; 
"Per box price to retailers & hospitals" = 3510; 
Size = "2/0 Only"; 
"Suture type and length" = "MONOCRYL Undyed Monofilament 70 CM"; 
nid = 86; 
}, 
{ 
Code = NW1642; 
"Needle Description" = "1/2 Circle Round Body"; 
"Needle Dimension" = "30 MM"; 
"No. of foils per box" = 12; 
"Per box maximum retail price" = 4800; 
"Per box price to retailers & hospitals" = 3510; 
Size = "1/0"; 
"Suture type and length" = "MONOCRYL Undyed Monofilament 70 CM"; 
nid = 86; 
}, 
{ 
Code = NW1648; 
"Needle Description" = "3/8 Circle Round Body"; 
"Needle Dimension" = "16 MM"; 
"No. of foils per box" = 12; 
"Per box maximum retail price" = 3600; 
"Per box price to retailers & hospitals" = 2687; 
Size = "4/0"; 
"Suture type and length" = "MONOCRYL Undyed Monofilament 70 cm"; 
nid = 86; 
}, 

Теперь я хочу, чтобы отфильтровать объект, основанный на поиске. Например, если я напечатал NW1648 Так что последний объект должен быть только виден. Средства я секция:

{ 
Code = NW1648; 
"Needle Description" = "3/8 Circle Round Body"; 
"Needle Dimension" = "16 MM"; 
"No. of foils per box" = 12; 
"Per box maximum retail price" = 3600; 
"Per box price to retailers & hospitals" = 2687; 
Size = "4/0"; 
"Suture type and length" = "MONOCRYL Undyed Monofilament 70 cm"; 
nid = 86; 
}, 

Ниже приведен метод, который я использую, чтобы фильтровать данные:

#pragma Search Method 
-(void)filterContentForSearchText:(NSString *)searchText scope:(NSString*)scope{ 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] %@",searchText]; 
    searchedData = [self->datas filteredArrayUsingPredicate:predicate]; 
} 

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString{ 
    [self filterContentForSearchText:searchString scope:[[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]] ]; 
    return YES; 
} 

Пожалуйста, помогите мне в этом. Заранее спасибо.

Обновлено # 1:

I am storing below data in `NSMutableDictionary` like below: 



    { 
Code = NW1648; 
"Needle Description" = "3/8 Circle Round Body"; 
"Needle Dimension" = "16 MM"; 
"No. of foils per box" = 12; 
"Per box maximum retail price" = 3600; 
"Per box price to retailers & hospitals" = 2687; 
Size = "4/0"; 
"Suture type and length" = "MONOCRYL Undyed Monofilament 70 cm"; 
nid = 86; 
}, 

NSMutableDictionary *resultantDataObject = [[NSMutableDictionary alloc]init]; 
    [resultantDataObject setObject:[val valueForKey:CODE_ID] forKey:SKU_CODE]; 
    [resultantDataObject setObject:[val valueForKey:CODE_NEEDLE_DESC] forKey:NEEDLE_DESCRIPTION]; 
    [resultantDataObject setObject:[val valueForKey:CODE_NEEDLE_DIMENSION] forKey:NEEDLE_DIMENSION]; 
    [resultantDataObject setObject:[val valueForKey:CODE_SUTURE] forKey:SUTURE_TYPE]; 
    [resultantDataObject setObject:[val valueForKey:CODE_SIZE] forKey:SIZE]; 
    [resultantDataObject setObject:[val valueForKey:CODE_FOILS] forKey:FOILS_PER_BOXEX]; 
    [resultantDataObject setObject:[val valueForKey:CODE_RETAILS_HOSPITAL] forKey:HOSPITAL_PRICE]; 
    [resultantDataObject setObject:[val valueForKey:CODE_MAX_RETAIL] forKey:MAXIMUM_RETAILS]; 

Здесь я добавляю этот NSMutableDictionary в NSMutableArray

[data addObject:resultantDataObject]; 

Обновлено # 2: Я объект теперь я хочу, чтобы найти по какой он типа, и если он то есть Он типа 34 Mono, поэтому я хочу найти его во всех ключах s и 34 могут быть в любом ключе, а затем снова искать с mono во всех ключах и фильтровать значение, имеющее оба ключевых слова.

+0

** само-> Данные ** это это ваш ** массив ** или ** словарь **, если это словарь, то легко фильтровать –

+0

@ Anbu.Karthik Его 'MutableArray'' NSMutableDictionary ' – user3154663

+0

k whats ваш 'NSMUtableDictionary' Имя, bz u find/искать код на ly na, легко получить результат –

ответ

0

Попробуйте это:

NSArray *filteredArr = [data filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(Code == %@)", searchText]]; 
NSLog(@"%@",filteredArr); 

Надеется, что это помогает .. :)

Если вы хотите добавить больше ключа сделать это:

NSArray *filteredArr = [data filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(Code == %@) AND (Needle Description == %@) AND (Needle Dimension == %@)", searchText,needleDescription, needleDimentsion]]; 
+0

Мне нужен фильтр во всех полях – user3154663

+0

@ User3154663> Затем добавьте те в предикат. :) – Rashad

+0

@ user3154663> См. Мое редактирование. :) – Rashad