我正在为我的应用程序构建一个搜索功能,让您通过姓名或电子邮件搜索用户。每个用户都有3个字段:名称、电子邮件和ID。我试图找出是否有一种更有效的方法来执行以下任务:当您输入名称或电子邮件时,如果存在数据,则需要获得其他两个字段。
现在,我正在将从数据库中检索到的所有用户数据组织成3个2d数组:
var emailByName = [[String]]() // ex: ["John Doe", "email@gmail.com"]
var nameByEmail = [[String]]() // ex: ["email@gmail.com", "John Doe"]
var IdByEmail = [[String]]() // ex: ["email@gmail.com", "123456789"]注意:可以有相同的名字,但电子邮件和ID是不同的。
输入"email@gmail.com“时,应用程序首先查看nameByEmail以获取此人的姓名,然后从IdByEmail获取ID。另一方面,如果键入名称,则搜索emailByName数组,并将结果用于搜索IdByEmail数组。
我有一种感觉,使用3种不同的数组不是很有效。有没有更好的方法来实现这个三角搜索?
发布于 2017-01-15 05:38:01
您需要具有以下3个属性的类或结构: id、name、email。然后使用数组上的谓词执行搜索。这是通往你想去的地方的最简单的路线。关于NSPredicate有很好的文档,它可以在数组上工作,这是非常棒的。
非那样做不行。
https://stackoverflow.com/questions/41658057
复制相似问题