我看到项目UISearchBar search two arrays和很多项目而没有找到解决方案,问题类似,有两个NSMutablesArrays“subdetail”和“sublista”它在Cell cell.textLabel 中显示 cell.detailTextLabel 。 我尝试UISearchbar,但我托盘与NSPredicate并没有运行,尝试NSRange并有更多的错误,我很绝望。请帮助我,任何评论都同意。
这是我在搜索中的代码:
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
NSMutableDictionary *playas = [NSMutableDictionary dictionaryWithObjectsAndKeys:sublista, @"nombre", subdetail, @"localidad", nil];
[alldata addObject:playas];
for(NSDictionary *playas in alldata){
NSString *nombre = [playas objectForKey:@"nombre"];
NSRange nombreRange = [[nombre lowercaseString] rangeOfString:[searchText lowercaseString]];
if(nombreRange.location != NSNotFound)
[filteredList addObject:playas];
}
}
添加其余代码.m和.h
https://dl.dropboxusercontent.com/u/6217319/BuscarViewController.h https://dl.dropboxusercontent.com/u/6217319/BuscarViewController.m
提前致谢。 最佳方式
答案 0 :(得分:0)
您的代码存在很多问题。我不知道哪些实际上正在破坏它,但任何这些问题都可能导致严重的问题。
首先,您提供的代码示例不提供您引用的大量hte对象的声明。这绝不可能按照给定的方式编译。如果这些是视图控制器实例的属性,则需要使用访问器方法 - self.alldata或[self alldata],无论您喜欢哪种方式。
其次,看起来你只是在添加这些属性。如果您从未重置其内容,则每次调用此方法时,您都会增加数据集的大小 - 查看代码,可能是递归的。
第三,您尝试将两个数据集合并在一起,然后尝试仅搜索其中一个。要么不合并,要么单独搜索,然后合并结果。事实上,你正在做的事情是行不通的。
第四,你的表视图应该只显示一种类型的数据,所以你不应该需要来合并。
编辑:
根据您提供的代码示例,您的整个VC将需要重组。考虑到你的代码中有多少是用西班牙语编写的,我对你实际做的事情做了一些猜测。
首先,假设您正在使用现代版本的xcode,请删除.m文件中的@synthesize(不再需要它)。这会导致您使用实际ivar的每个地方而不是正确的getter变成错误,因此您可以快速修复它们。 iVars默认使用其属性名称的前缀下划线,因此如果必须,您仍然可以访问它们 - 但只能通过显式访问ivar而不是属性。
其次,您应该重新构建处理数据的方式。我不知道你从哪里获得数据,但看起来各种对象都相当一致。您应该继续创建一个新类来保存所有数据,或者只将它们全部放入一个字典中。此时,'alldata'属性实际上应该是所有有效数据的数组。你应该做的是拥有一个过滤的数据列表(filteredData将是一个好名字),并在那里放置与搜索条件匹配的任何数据。只需记住要么重新加载表格,要么在项目移入和移出过滤后的列表时适当更新。