【发布时间】:2012-12-08 21:45:51
【问题描述】:
我正在使用 NSPredicate 过滤 NSArray,并将过滤后的数组用于我的 UITableView。 当用户在 UITextField 中输入文本时,我正在使用此过滤。所以每次 UITextField 中的文本发生变化时,我都会调用我的过滤器函数。
看起来像这样:
NSArray *hugeArray = ...;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == %@", input];
_resultArray = [hugeArray filteredArrayUsingPredicate:predicate];
[_myTableView reloadData];
当我使用包含大量对象的 NSArray 时,输入会变得非常慢(UI 中的完整输入会变慢)。 是否有可能获得更好的性能或在后台运行过滤命令?
不应阻止在 UITextField 中写入内容。当UITableView在输入后很短的时间后刷新时可能没问题。
【问题讨论】:
-
我建议你使用 NSOperationqueue 来处理过滤器。如果用户在过滤时插入另一个字符串,则中止旧的。
标签: ios nsarray nspredicate