如何在目标C中搜索nsmutablearray

时间:2010-07-01 12:49:34

标签: iphone objective-c

任何人都可以告诉我如何从xml feed中搜索存储了哪些对象的NSMutable Arry 我有以下代码

- (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并且feed来自xml feed 哪一个 click here 特别是我正在提取这个xml feed并在表格单元格中显示图像和标题tage知道我想在其中实现搜索栏 谢谢.... 我在等你的回复......

3 个答案:

答案 0 :(得分: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;
}

希望有所帮助。

注意:如果你在数组中使用自己的对象,如果你覆盖了isEqual:(和containsObject:

,你可以使用hash

答案 1 :(得分:1)

取决于您想要搜索的方式。如果您只是在寻找特定对象,可以使用containsObject:

答案 2 :(得分:0)

如果不了解您想要的内容,很难回答您的问题。但这里有一些起点:

  1. NSArray - 查看从indexOfObject-开始的方法;我认为其中一个可能会做你想要的。还有filteredArrayUsingPredicate
  2. NSMutableArray - 我认为唯一值得注意的方法是filterUsingPredicate
  3. 希望其中一个可以帮助你。