两个 NSMutables 数组中的 UISearch 栏
Posted
技术标签:
【中文标题】两个 NSMutables 数组中的 UISearch 栏【英文标题】:UISearch bar in two NSMutables arrays 【发布时间】:2014-02-28 20:43:02 【问题描述】:我看到项目 UISearchBar search two arrays 和很多项目并没有找到解决方案,问题类似,有两个 NSMutablesArrays "subdetail" 和 "sublista" 它在 Cell cell.textLabel 和 中显示>cell.detailTextLabel。 我尝试使用 UISearchbar,但我使用 NSPredicate 托盘而不运行,尝试使用 NSRange 并出现更多错误,我很绝望。请帮助我,任何 cmets 都同意。
这是我在搜索中的代码:
- (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
提前致谢。 最好的问候
【问题讨论】:
【参考方案1】:您的代码存在很多问题。我不知道哪些问题实际上破坏了它,但这些问题中的任何一个都可能导致严重的问题。
首先,您提供的代码示例没有为您引用的许多 hte 对象提供声明。这不可能按照给定的方式编译。如果这些是视图控制器实例的属性,您需要使用访问器方法——self.alldata 或 [self alldata],无论您喜欢哪个。
其次,您似乎只是在添加这些属性。如果您从不重置它们的内容,则每次调用此方法时,您都会增加数据集的大小——查看您的代码,可能是递归的。
第三,您尝试将两个数据集合并在一起,然后尝试仅搜索其中一个。要么不合并,要么分别搜索两者然后合并结果。事实上,你正在做的事情是行不通的。
第四,您的表格视图实际上应该只显示一种类型的数据,因此您不应该需要合并。
编辑:
根据您提供的代码示例,您的整个 VC 将需要重组。鉴于您的代码中有多少看起来是用西班牙语编写的,我正在对您实际在做什么进行一些猜测。
首先,假设您使用的是现代版本的 xcode,请去掉 .m 文件中的 @synthesize(不再需要它)。这将导致您使用实际 ivar 而不是适当的 getter 的每个地方都变成错误,因此您可以快速修复它们。 iVars 默认使用其属性名称的前缀下划线,因此您仍然可以在必要时访问它们——但只能通过显式访问 ivar 而不是属性。
其次,您应该重新调整处理数据的方式。我不知道你从哪里得到你的数据,但看起来各种对象是相当一致的。您应该继续创建一个新类来保存所有数据,或者将它们全部放入一个字典中。此时,'alldata' 属性实际上应该是一个包含所有有效数据的数组。然后你应该做的是有一个过滤的数据列表(filteredData 是个好名字),然后你把任何符合搜索条件的数据放在那里。只要记住在项目移入和移出过滤列表时重新加载表或适当地更新它。
【讨论】:
谢谢,并同意,编辑和添加 .h 和 .m 附加在下面供您查看。 dl.dropboxusercontent.com/u/6217319/BuscarViewController.mdl.dropboxusercontent.com/u/6217319/BuscarViewController.h 同意这个,但是如果你看到代码,你能检查从sqlite数据库中提取的数据吗,这会构建两个NSMutableArrays..sublista和sub detail,分别包含名称和详细信息。在代码中,所有数据(NSMUtableArray)都在这个构造 NSDictionary 上,有两个键 nombre 和 localidad。这是我做谓词的问题?或过滤?你能在代码中看到filterContentForSearchText下的filteredlist数组吗?以上是关于两个 NSMutables 数组中的 UISearch 栏的主要内容,如果未能解决你的问题,请参考以下文章