首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xcode 7不能将类型'[NSHTTPCookie]‘的值赋给类型'[NSHTTPCookie]’的值

xcode 7不能将类型'[NSHTTPCookie]‘的值赋给类型'[NSHTTPCookie]’的值
EN

Stack Overflow用户
提问于 2015-07-13 14:00:51
回答 1查看 1K关注 0票数 0

我刚刚更新到Xcode7,当我在一个开源库中遇到这个错误时,我正在尝试将我的项目切换到使用SWIFT2.0语法。以下是相关代码:

代码语言:javascript
复制
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”类型的值。

这里有什么东西我遗漏了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-13 14:18:02

将代码更改为:

代码语言:javascript
复制
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签名:

代码语言:javascript
复制
class func cookiesWithResponseHeaderFields(headerFields: [String : String],
  forURL URL: NSURL) -> [NSHTTPCookie]

请阅读How do I ask a good question。至少,你应该指出问题出在哪里,等等。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31385472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档