首页 > 解决方案 > Swift:无法在初始化时将类型“()”的值转换为指定类型

问题描述

我有 Struct init,我正在尝试过滤 init 中的数组:

public struct doSomething: Codable {
    public var listOfStuff: [String]

    init(someStuff: [String]) {
        var clone = someStuff
        let stuff: [String] = clone.removeAll { $0 == "myName"}
        listOfStuff = stuff
    }
}

在这一行let stuff: [String] = clone.removeAll { $0 == "myName"}我收到此错误:

error: cannot convert value of type '()' to specified type '[String] 在此处输入图像描述 你们中的任何人都知道为什么我会收到此错误,或者您是否知道解决方法?

我会非常感谢你的帮助。

标签: iosarraysswift5.2xcode11.4

解决方案


removeAll不返回值。这与返回是一回事,与返回Void是一回事()

clone.removeAll { $0 == "myName" }
listOfStuff = clone

更好的是,甚至不要使用它。

init(someStuff: [String]) {
  listOfStuff = someStuff.filter { $0 != "myName" }
}

推荐阅读