我刚刚更新到Xcode7,当我在一个开源库中遇到这个错误时,我正在尝试将我的项目切换到使用SWIFT2.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”类型的值。
这里有什么东西我遗漏了吗?
发布于 2015-07-13 14:18:02
将代码更改为:
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 ... line -确实添加了as? [String:String],因为allHeadersFields返回类型是[NSObject : AnyObject]而不是cookiesWithResponseHeaderFields...所需的。as! [NSHTTPCookie] -它没有意义,因为cookiesWithResponseHeaderFields返回类型已经是[NSHTTPCookie]只需检查cookiesWithResponseHeaderFields签名:
class func cookiesWithResponseHeaderFields(headerFields: [String : String],
forURL URL: NSURL) -> [NSHTTPCookie]请阅读How do I ask a good question。至少,你应该指出问题出在哪里,等等。
https://stackoverflow.com/questions/31385472
复制相似问题