如何制作NSCountedSet类的结构版本?

时间:2016-08-24 15:25:32

标签: ios arrays swift class struct

我正在开发一个应用程序,我需要使用两个数组,两个数组都保持相同的自定义数据类型,MenuItem。

我需要比较它们并找到两个数组的共同元素。 我通过将两个数组转换为集合然后使用set struct的compare函数来比较两个数组。

然而,我需要将公共元素数组转换为计数集,以便我可以找到公共元素组中存在多少元素。

我遇到的问题是将公共元素数组转换为计数集。在Swift中,有一个self.thread_flag类但没有threading.Lock结构,就像大多数内置的swift数据类型一样:

NSCountedSet

我想基于CountedSet类创建一个结构,以便我可以将公共元素数组转换为计数集。

let groups = Array(self.menu.keys) //menu and cart are dictionaries the structure [MenuGroup: [MenuItem]] let cartGroups = Array(self.cart.keys) let group = groups[indexPath.section] if cartGroups.contains(group) { let items = menu[group] as [MenuItem]! let cartItems = cart[group] let itemsSet = Set<MenuItem>(items!) let cartItemsSet = Set<MenuItem>(cartItems!) let similarSet = itemsSet.intersection(cartItemsSet) let similarArray = NSMutableArray(Array(similarSet)) let similarCounterSet = NSCountedSet(array: similarArray) } 声明用于其他内容,与此问题无关。

有关如何做到这一点的任何想法?如果有人对这个问题采取不同的方法,也可以随意提及。

谢谢,
西蒙

1 个答案:

答案 0 :(得分:0)

感谢Martin R我发现了如何执行此操作的示例:

  

有各种可用的CountedSet实现,例如https://github.com/0x7fffffff/CountedSet