Iphone 是否在内部使用任何搜索算法进行预测?

Iphone 是否在内部使用任何搜索算法进行预测?,iphone,algorithm,search,nspredicate,Iphone,Algorithm,Search,Nspredicate,目前,我正在使用NSPredicate从字符串进行搜索。但我有大约2000张唱片。因此,使用NSPredicate遍历这些记录进行搜索需要一些时间 我只是想知道NSPredicate是否在内部使用任何搜索算法,还是应该使用任何搜索算法进行快速搜索 我希望我的应用程序应该像联系人应用程序一样搜索(平滑)。我该怎么做才能使我的搜索像contacts应用程序一样顺畅 谢谢。NSPredicate不使用任何搜索算法-所有NSPredicate都表示您的查询 这是任何接受NSPredicate作为选择搜索

目前,我正在使用NSPredicate从字符串进行搜索。但我有大约2000张唱片。因此,使用NSPredicate遍历这些记录进行搜索需要一些时间

我只是想知道NSPredicate是否在内部使用任何搜索算法,还是应该使用任何搜索算法进行快速搜索

我希望我的应用程序应该像联系人应用程序一样搜索(平滑)。我该怎么做才能使我的搜索像contacts应用程序一样顺畅


谢谢。

NSPredicate
不使用任何搜索算法-所有
NSPredicate
都表示您的查询

这是任何接受
NSPredicate
作为选择搜索算法选项的人的工作。在您的例子中,它可能是
NSArray
filteredarrayingpredicate:
方法

如果您想更快地搜索数据,您必须自己编写一个更好的算法,我打赌数组只会遍历每个项并将其与谓词匹配。效率不高,但对任何事情都有效:)

尝试查看sqlite(或CoreData),它们比普通数组具有更好的索引

或者你也可以自己做一个索引——把每个联系人放到字典里,索引键是联系人的第一个字母——这样可以减少你需要搜索的记录数量

i、 而不是数组

[ @"Alex", @"Bob", @"Bill", @"Carl" ... ]
我有一本字典

{
  @"A" : [ @"Alex" ],
  @"B" : [ @"Bob", @"Bill" ],
  @"C" : [ @"Carl" ] 
  ...
}
对于搜索字符串
@“Bi”
,您只需在数组中的项目中搜索
@“B”


PS别忘了让你的字典键大小写/变音独立;)

谢谢你的信息。我要试一试。