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。至少,你应该指出问题所在的行等。