2010-07-01 4 views
-1

любой орган может сказать мне, как искать NSMutable Arry, в котором хранятся объекты из кормов XML У меня есть следующий кодкак искать nsmutable массив в объективном C

- (void) searchTableView { 

NSString *searchText = searchBar.text; 
NSMutableArray *searchArray = [[NSMutableArray alloc] init]; 
//blog entries is the nsmutable array in which objects are stored from RSS feed 
for (NSMutableDictionary *dictionary in blogEntries) 
{ 
    NSArray *images=[dictionary objectForKey:@"image"]; 
    NSArray *titlearray = [dictionary objectForKey:@"title"]; 
    NSDictionary *imagesDic=[NSDictionary dictionaryWithObject:images forKey:@"image"]; 
    NSDictionary *titlearrayDic=[NSDictionary dictionaryWithObject:titlearray forKey:@"title"]; 
    [searchArray addObject:imagesDic]; 
    [searchArray addObject:titlearrayDic]; 
} 
//know the problem comes in below code i just want to compare title not image string as there any way to search only of title array not for both image in title some what like this For(nsstring *stemp in searcArray.titleArray etc) 
for (NSString *sTemp in searchArray) 
{ 
    NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch]; 

    if (titleResultsRange.length > 0){ 

      [copyListOfItems addObject:sTemp]; 

    }} 

проблема заключается в том, что этот код просто экономия название не изображение, и если я сохраню изображение, тогда он также будет искать в строке изображения, которую я не хочу делать. я хочу, чтобы пользователь выполнил поиск только по названию, а затем, когда он напечатает что-то в текстовом поле, если поиск истинен для некоторых значений, тогда только в таблице таблицы отображаются заголовок и изображение. , как это RSS Appliction и фиды пришедшего от подачи XML которых click here bescially я извлекая этот канал XML и эм отображения изображения и название щества в ячейке таблицы знает, что я хочу реализовать SearchBar в нем Спасибо .... Я жду вашего ответа ...

+0

Можете ли вы привести пример массива? – djhworld

+0

Что вы подразумеваете под «поиском»? Нужно ли фильтровать массив до тех, кто соответствует определенным критериям? Вам нужно только первое, которое соответствует критериям? Вам нужно уточнить, прежде чем вы сможете ожидать сколько-нибудь значимых ответов. –

ответ

1

В зависимости от того, как вы хотите искать. Если вы ищете определенный объект, вы можете использовать containsObject:.

2

@mipadi правый - попробуйте использовать containsObject: первый.

Если это не сработает, это сделает простой цикл - вы можете указать любые подходящие критерии, которые вы хотите там. например Этот код выполняет поиск, сравнивая свойства имени:

- (id)searchArray:(NSArray *)haystack for:(id)needle { 
    for(id temp in haystack) 
     if ([temp name] isEqual:[needle name]]) 
      return needle; 

    return nil; 
} 

Надеюсь, что это поможет.

NB Если вы используете свои собственные объекты в массиве, вы можете использовать containsObject: если вы переопределены isEqual:hash)

0

, не зная больше о том, что вы хотите, это трудно ответить на ваш вопрос. Но вот некоторые отправные точки:

  1. NSArray - проверить методы, начиная как indexOfObject-; Я думаю, что один из них, вероятно, делает то, что вы хотите. Также есть filteredArrayUsingPredicate.
  2. NSMutableArray - Единственный известный способ здесь filterUsingPredicate, я думаю.

Надеюсь, это поможет вам.