美文网首页
swift中removeObject方法

swift中removeObject方法

作者: 本帅不良 | 来源:发表于2018-08-15 09:29 被阅读196次

    习惯使用OC的小伙伴会发现swift的数组没有removeObject方法!

    _dataArray = @[@"张三",@"张三",@"李四"].mutableCopy;
    [_dataArray removeObject:@"张三"];
    

    swift数组只有一个

    var dataSource = ["张生","李浩","王鹏","赵雷"]
    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三种操作就可以简单实现我们的需求。

    小结:不要纠结swift为何没有removeObject方法,适用Set代替数组。
    注意:集合Set只能用于筛选数据哦,显示的话,还是需要用数组,因为集合Set没有索引值。

    相关文章

      网友评论

          本文标题:swift中removeObject方法

          本文链接:https://www.haomeiwen.com/subject/vwribftx.html