//*************************************
//
// Swift调用OC之NSSet
//
// 1.NSSet是一个无序对象的集合,集合内元素是唯一
// 2.NSSet初始化
// 3.NSSet常用的属性和方法
// --获得集的元素个数
// --获得集中所有元素组成的数组
// --判断集合内是否存在指定元素-->返回Bool
// --判断是否存在指定元素-->返回该元素
// --判断当前集合是否指定集的子集
// --判断是否有交集
// --判断两个集是否相等--元素相等即相等,不判顺序
// --动态集NSMutableSet可以进行交、并、差集操作
// --集合元素计数
//
//*************************************
import Foundation
//======= NSSet初始化 ========
//使用数组初始化集,会自动将重复的元素去掉
let swiftArray1 = ["a","c","e","d","b","a","b"]
let nsSet1 = NSSet(array:swiftArray1)
println(nsSet1)
//输出: {(
// d,
// b,
// e,
// c,
// a
// )}
//======= 动态集 ========
var nsMutableSet1 = NSMutableSet(array: swiftArray1)
nsMutableSet1.addObject("t")
println(nsMutableSet1)
//输出: {(
// t,
// c,
// d,
// e,
// a,
// b
// )}
//========== NSSet常用的属性和方法===========
//获得集的元素个数
nsSet1.count //5
//获得集中所有元素组成的数组
let arr1 = nsSet1.allObjects //["c", "d", "e", "a","b"]
arr1[0] //"c"
//判断集合内是否存在指定元素-->返回Bool
nsSet1.containsObject("d") //true
nsSet1.containsObject("D") //false
//判断是否存在指定元素-->返回该元素
nsSet1.member("D") //nil
nsSet1.member("d") //{Some "d"}
nsSet1.member("d")! //"d"
//判断当前集合是否指定集的子集
nsMutableSet1.isSubsetOfSet(nsSet1) //false
nsSet1.isSubsetOfSet(nsMutableSet1) //true
//判断是否有交集
nsSet1.intersectsSet(nsMutableSet1) //true
//判断两个集是否相等--元素相等即相等,不判顺序
nsSet1.isEqualToSet(nsMutableSet1) //false
ifnsSet1 == nsMutableSet1 {
println("Equal")
}else{ println("notEqual") }
//动态集NSMutableSet可以进行交、并、差集操作
//交集
nsMutableSet1.intersectSet(nsSet1) //nsMutableSet1现在为交集的结果
//并集
nsMutableSet1.unionSet(nsSet1) //nsMutableSet1现在为并集的结果
//差集
nsMutableSet1.minusSet(nsSet1) //nsMutableSet1现在为差集的结果
//集合元素计数,使用NSCountedSet类型
//元素添加到集中,计数+1,反之-1
var nscountSet2 = NSCountedSet()
nscountSet2.addObject("aa")
nscountSet2.addObject("aa")
nscountSet2.removeObject("aa")
nscountSet2.addObject("bb")
println(nscountSet2.countForObject("aa")) //1
println(nscountSet2.countForObject("bb")) //1