Array.filter 使用内联正则表达式

Array.filter with inline regex

我正在编写一个函数,给定一个对象数组,其中包含一个名为 url 的 属性,删除所有具有 错误 url 的对象。

这是我的:

func cleanArray(data:[String: Any])->Void {
   let uris = data.filter{([=11=]["url"] as! String).range(of: #"^(https?|file|ftp)"#, options: .regularExpression) != nil };
}

但是 xcode 在 [=13=] 中显示错误:

Value of tuple type '(key: String, value: Any)' has no member 'subscript'

[String: Any]是一个字典,你需要[[String: Any]]

func cleanArray(data:[[String: Any]]) -> Void { 
    let uris = data.filter{ ([=10=]["url"] as! String).range(of: #"^(https?|file|ftp)"#, options: .regularExpression) != nil };
}

如果你把它变成一个模型数组,这可能更面向对象