swift中removeObject方法,Array中removeObject方法

swift数组只有一个

var dataSource = ["A","B","C","D"]
dataSource.remove(at: i)

如果我要实现类似OC数组的removeObject方法咋办呢?
网上有人解答的思路是这样的:首先,找到数组中该元素所在的位置,然后使用remove(at: i)方法移除。
例如:

for item in self.userList {
    var i = 0
    for userItem in self.sendModel.arrayOfUserList {
        if item.userID == userItem.userID {
            self.sendModel.arrayOfUserList.remove(at: i)
            break
        }
        i += 1
    }
}

这种方式固然可行,但swift显然不希望我们这样做!

我们知道,swift有一个新的类型集合Set,如果我们用集合Set代替数组,就变得简单了太多了!

var selectData : Set<Int> = [1,2,4,6]
//移除某个元素
selectData.remove(indexPath.row)
//插入某个元素
selectData.insert(indexPath.row)
//是否包含某个元素
selectData.contains(indexPath.row)

集合可以看做是一种特殊的数组,为啥这样说呢?请仔细看两者的初始化!例子中两者的初值都是一个数组[,,,],但对于集合而言,我给它指定了一个类型叫集合!
那么集合相对数组,特殊在哪里呢?
1、集合是无序的,所以你不能像数组一样,通过索引找到集合中某个元素
2、集合中的元素是不重复的,数组可以有多个重复的值,对集合而言,不会有重复的元素。

显然,对于我们需要筛选的业务场景而言,集合显得更加适用!我们不需要考虑重复,只需要contains、remove、insert三种操作就可以简单实现我们的需求。

 

 第二种方法 为Array类添加扩展

extension Array where Element: Equatable {

mutating func remove(_ object: Element) {
    if let index = index(of: object) {
        remove(at: index)
    }
}}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值