【问题标题】:xcode 7 cannot assign a value of type '[NSHTTPCookie]' to a value of type '[NSHTTPCookie]'xcode 7 无法将“[NSHTTPCookie]”类型的值分配给“[NSHTTPCookie]”类型的值
【发布时间】:2015-07-13 14:00:51
【问题描述】:

我刚刚更新到 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]”类型的值

这里有什么我遗漏的吗?

【问题讨论】:

    标签: xcode swift swift2


    【解决方案1】:

    将您的代码更改为:

    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],因为 cookiesWithResponseHeaderFields... 需要 allHeadersFields 返回类型是 [NSObject : AnyObject] 而不是 [String:String]

    • 删除了as! [NSHTTPCookie]——没有意义,因为cookiesWithResponseHeaderFields返回类型已经是[NSHTTPCookie]

    只需检查cookiesWithResponseHeaderFields签名:

    class func cookiesWithResponseHeaderFields(headerFields: [String : String],
      forURL URL: NSURL) -> [NSHTTPCookie]
    

    请阅读How do I ask a good question。至少,您应该指出问题所在的行等。

    【讨论】:

    • 这行得通,谢谢!很抱歉没有指出具体的行,并感谢您的参考。
    • 不客气。请记住 - 提供有关您的问题的更多信息(即使您认为它不重要),无需其他问题即可更快地回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 2017-07-02
    • 2015-11-08
    • 2015-10-24
    相关资源
    最近更新 更多