xcode 7 无法将“[NSHTTPCookie]”类型的值分配给“[NSHTTPCookie]”类型的值
xcode 7 cannot assign a value of type '[NSHTTPCookie]' to a value of type '[NSHTTPCookie]'
我刚刚更新到 Xcode7 并试图将我的项目切换为使用 Swift 2.0 语法,当我 运行 在来自开源库的文件中出现此错误时我正在使用。这是相关代码:
public lazy var cookies:[String:NSHTTPCookie] = {
let foundCookies: [NSHTTPCookie]
if let responseHeaders = (self.response as? NSHTTPURLResponse)?.allHeaderFields {
foundCookies = NSHTTPCookie.cookiesWithResponseHeaderFields(responseHeaders, forURL:NSURL(string:"")!) as! [NSHTTPCookie]
} else {
foundCookies = []
}
var result:[String:NSHTTPCookie] = [:]
for cookie in foundCookies {
result[cookie.name] = cookie
}
return result
}()
错误显示:无法将“[NSHTTPCookie]”类型的值分配给“[NSHTTPCookie]”类型的值
我在这里遗漏了什么吗?
将您的代码更改为:
public lazy var cookies:[String:NSHTTPCookie] = {
let foundCookies: [NSHTTPCookie]
if let responseHeaders = (self.response as? NSHTTPURLResponse)?.allHeaderFields as? [String:String] {
foundCookies = NSHTTPCookie.cookiesWithResponseHeaderFields(responseHeaders, forURL:NSURL(string:"")!)
} else {
foundCookies = []
}
var result:[String:NSHTTPCookie] = [:]
for cookie in foundCookies {
result[cookie.name] = cookie
}
return result
}()
更改:
if let responseHeaders ...
行 - 确实添加了 as? [String:String]
,因为 allHeadersFields
return 类型是 [NSObject : AnyObject]
而不是 [String:String
] cookiesWithResponseHeaderFields...
要求
删除了 as! [NSHTTPCookie]
- 它没有任何意义,因为 cookiesWithResponseHeaderFields
return 类型已经是 [NSHTTPCookie]
只需检查cookiesWithResponseHeaderFields
签名:
class func cookiesWithResponseHeaderFields(headerFields: [String : String],
forURL URL: NSURL) -> [NSHTTPCookie]
请阅读How do I ask a good question。至少,你应该指出问题所在的行等。
我刚刚更新到 Xcode7 并试图将我的项目切换为使用 Swift 2.0 语法,当我 运行 在来自开源库的文件中出现此错误时我正在使用。这是相关代码:
public lazy var cookies:[String:NSHTTPCookie] = {
let foundCookies: [NSHTTPCookie]
if let responseHeaders = (self.response as? NSHTTPURLResponse)?.allHeaderFields {
foundCookies = NSHTTPCookie.cookiesWithResponseHeaderFields(responseHeaders, forURL:NSURL(string:"")!) as! [NSHTTPCookie]
} else {
foundCookies = []
}
var result:[String:NSHTTPCookie] = [:]
for cookie in foundCookies {
result[cookie.name] = cookie
}
return result
}()
错误显示:无法将“[NSHTTPCookie]”类型的值分配给“[NSHTTPCookie]”类型的值
我在这里遗漏了什么吗?
将您的代码更改为:
public lazy var cookies:[String:NSHTTPCookie] = {
let foundCookies: [NSHTTPCookie]
if let responseHeaders = (self.response as? NSHTTPURLResponse)?.allHeaderFields as? [String:String] {
foundCookies = NSHTTPCookie.cookiesWithResponseHeaderFields(responseHeaders, forURL:NSURL(string:"")!)
} else {
foundCookies = []
}
var result:[String:NSHTTPCookie] = [:]
for cookie in foundCookies {
result[cookie.name] = cookie
}
return result
}()
更改:
if let responseHeaders ...
行 - 确实添加了as? [String:String]
,因为allHeadersFields
return 类型是[NSObject : AnyObject]
而不是[String:String
]cookiesWithResponseHeaderFields...
要求
删除了
as! [NSHTTPCookie]
- 它没有任何意义,因为cookiesWithResponseHeaderFields
return 类型已经是[NSHTTPCookie]
只需检查cookiesWithResponseHeaderFields
签名:
class func cookiesWithResponseHeaderFields(headerFields: [String : String],
forURL URL: NSURL) -> [NSHTTPCookie]
请阅读How do I ask a good question。至少,你应该指出问题所在的行等。