Swift:筛选具有特定类型的任何对象的数组

时间:2018-07-11 14:36:29

标签: arrays swift filter

我有一个数组(任何类型),其中包含自定义对象(示例对象:车辆,停车场,摩托车)的列表。

我需要使用特定类型过滤此数组:例如Vehicle。 你能帮我吗?

1 个答案:

答案 0 :(得分:4)

使用compactMapas?

let values: [Any] = [1, "string", 0.0, ["array values"]]

let strings = values.compactMap { $0 as? String } // ["string"]

确保尽快执行此操作(一旦数据进入系统)。例如,您不需要[Any]作为类属性。如果您认为需要,则可能是您错误地设计了数据模型,并实际上想要一个枚举。 Any在Swift中不是正确的类型;它可以处理某些边缘情况,主要涉及Objective-C,以及非常特殊的情况,例如print。如果您不是说“在这里绝对可以使用任何类型”,那么您就不是在说Any