Ios 从字典中的引用中删除数组中的特定对象
我的问题: 我需要知道我所做的是不是最好的方法,如果不是,是什么 情况: 我在数组中有“联系人”对象。这些联系人必须按字母顺序排列,并且可以有多个电话号码。我把这个数组分成27个联系人数组,每个联系人代表字母表中的一个字母。所以我有我所有的“A”联系人,然后是“B”等等。 此外,在“拆分”过程中,我还在字典中添加了每个联系人的引用,其中对象是联系人,键是他的电话号码 因为一个联系人可以有X个电话号码,所以字典中X个不同条目中可能有X次相同联系人。我需要它,这样我就可以找到任何号码的联系人 所有这些都很有魅力 现在,我需要比较我在线数据库中的所有这些数字(注意:我正在使用parse),以查看其中一些联系人是否已经是用户。如果是,则需要将它们放在我的tableview的特定部分中。(我的tableview只是所有联系人,以字母部分分隔,+一个“用户”部分)。并且联系人不能出现在用户部分和信函部分。如果联系人是用户,则必须将其分开 我在问什么与我在做什么: 现在,我只是重新循环每个数组,并将每个元素与我在网上找到的所有用户进行比较。这是一个很大的循环,看起来像是浪费时间和资源 我想做的是:考虑到我的字典中有联系人对象的引用,以某种方式清理我找到的用户数组 TL;医生: 我的阵列: 第一部分中的用户,然后按字母顺序联系 [[user1,user2,user3,…],[a1,a2,a3,…],[b1,b2,…],…] 我的字典:Ios 从字典中的引用中删除数组中的特定对象,ios,arrays,dictionary,Ios,Arrays,Dictionary,我的问题: 我需要知道我所做的是不是最好的方法,如果不是,是什么 情况: 我在数组中有“联系人”对象。这些联系人必须按字母顺序排列,并且可以有多个电话号码。我把这个数组分成27个联系人数组,每个联系人代表字母表中的一个字母。所以我有我所有的“A”联系人,然后是“B”等等。 此外,在“拆分”过程中,我还在字典中添加了每个联系人的引用,其中对象是联系人,键是他的电话号码 因为一个联系人可以有X个电话号码,所以字典中X个不同条目中可能有X次相同联系人。我需要它,这样我就可以找到任何号码的联系人 所有这
- a1-电话1
- a1-电话2
- a1-电话3
- a2-电话1
- a3-电话1
NSSet
进行跟踪,因为顺序并不重要
在上面,您应该有一个处理分组和排序问题的“视图模型”。这不是“事实”。只要底层数据发生了广泛的变化,您就应该愿意将其扔掉。它的数据结构应该指向底层模型,并且应该以与表视图所需完全匹配的方式存储。将模型和视图模型分开是控制复杂性的最佳方法之一。然后你就知道只有一个地方数据可以改变(模型),而其他的一切都会对此做出反应
关于你的分区问题:你有一个联系人列表,你想根据他们的电话号码是否出现在另一个列表中将他们分成两组。如果你的总列表只有几十个条目,坦白地说,你怎么做并不重要。对于足够小的n,即使是O(n^2)也可以。首先关注使其简单可靠,然后使用仪器分析,以了解真正的瓶颈在哪里
也就是说,通常确定集合交集的最快方法是对两个集合进行排序,并同时遍历它们。因此,您需要创建一个“联系人”数组,其中包含“电话号码+联系人指针”和一个“用户”数组,其中仅包含电话号码。按电话号码对它们进行分类。遍历它们,比较每个列表的当前元素,然后增加较小列表的索引。如果不匹配,请将联系人放入一个列表中。如果是一根火柴,就把它放在另一根
但我可能只是把所有的电话号码放在一个集合中,然后使用成员:
来查找它们。这通常比较容易