错误:无法使用String
类型的索引下标类型为[HTTPCookiePropertyKey : Any]
的值
代码:
func copyCookiesForEx() {
if let cookies = HTTPCookieStorage.shared.cookies(for: NSURL(string: kEHentaiURL)! as URL) {
print(cookies)
for c in cookies {
if var properties = c.properties {
properties["Domain"] = ".exhentai.org" -< error is here
if let newCookie = HTTPCookie(properties: properties) {
HTTPCookieStorage.shared.setCookie(newCookie)
}
}
}
}
}
答案 0 :(得分:2)
错误消息明确指出问题所在。 properties
的类型为Dictionary<HTTPCookiePropertyKey,Any>
,因此您无法使用String
作为订阅的关键字。
您必须使用HTTPCookiePropertyKey.domain
代替"domain"
。
如果您可以直接使用NSURL(string:)
的相同初始化方法,则也不应使用URL
然后将其强制转换为URL
。
func copyCookiesForEx() {
if let cookies = HTTPCookieStorage.shared.cookies(for: URL(string: kEHentaiURL)!) {
if var properties = c.properties {
properties[.domain] = ".extentai.org" // HTTPCookiePropertyKey.domain
if let newCookie = HTTPCookie(properties: properties) {
HTTPCookieStorage.shared.setCookie(newCookie)
}
}
}
}
答案 1 :(得分:1)
Swift 4为可靠性和稳健性引入了许多新的关键结构。
只是
properties[.domain] = ".exhentai.org"
的文档
不要在Swift 3+中使用NSURL
对URL
进行丑陋演员,请始终使用原生结构URL
... cookies(for:URL(string: kEHentaiURL)!) { ...