【发布时间】:2020-01-12 03:38:11
【问题描述】:
我正在编写一个函数,它给定一个对象数组,其中包含一个名为 url 的属性,删除所有带有 bad url 的对象。
这是我所拥有的:
func cleanArray(data:[String: Any])->Void {
let uris = data.filter{($0["url"] as! String).range(of: #"^(https?|file|ftp)"#, options: .regularExpression) != nil };
}
但是 xcode 在$0 中显示错误:
元组类型'(key: String, value: Any)'的值没有成员'subscript'
【问题讨论】:
-
要检查字符串是否为有效 URL,请查看此处stackoverflow.com/questions/28079123/…
-
您不应该对原始的
String进行这样的 URL 操作。您应该将字典中的数据提取到结构中,并在结构的初始化程序中执行此验证。您的代码甚至不需要正则表达式。如果只使用 URL API 会简单得多,这将允许您编写:["http", "https", "file", "ftp"].contains(url.scheme)