【问题标题】:How to remove an element of a given custom type value from an array in Swift如何从Swift中的数组中删除给定自定义类型值的元素
【发布时间】:2015-07-02 09:49:20
【问题描述】:

我想从数组中删除自定义类型值的元素。

我想将一个变体实例传递给函数以将其从数组中删除,我不想使用 removeAtIndex()。

var favoriteVariants: [Variant]

func removeVariant(variant: Variant)
{
}

【问题讨论】:

    标签: ios arrays swift


    【解决方案1】:

    如果 VariantEquatable 并且您只想删除第一个匹配的:

    if let idx = favoriteVariants.indexOf(variant) {
        favoriteVariants.removeAtIndex(idx)
    }
    

    如果不是 Equatable 并且您有一些其他匹配条件要找到一个要删除的条件:

    let idx = favoriteVariants.indexOf {
       // match $0 to variant
    }
    
    if let idx = idx {
        favoriteVariants.removeAtIndex(idx)
    }
    

    (这些假设是 Swift 2.0 - 如果是 1.2,它是 find(favoriteVariants, variant) 而不是 indexOf,并且没有一个需要闭包的版本,尽管 write one 并不难)

    如果您想一次性删除多个:

    favoriteVariants = favoriteVariants.filter {
        // criteria to _keep_ any given favorite
    }
    

    如果您想要做的事情足够笼统以证明它的合理性,所有这些都可以包含在扩展中。

    【讨论】:

    • 用户无需使用“我不想使用 removeAtIndex()。”但是你使用
    • 我认为这意味着“我没有索引”(因此提供了一种查找方法),而不是任意约束以避免无缘无故地使用方法。
    • 感谢 Airspeed Velocity,我现在使用的是 swift 1.2,使用 find 时我得到了这个。不要使用“([Varaint],Variant)”类型的参数列表调用“find”
    猜你喜欢
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    相关资源
    最近更新 更多