xcode 7无法将类型"[NSHTTPCookie]"的值分配给类型"[NSHTTPCookie]"的值 [英] xcode 7 cannot assign a value of type '[NSHTTPCookie]' to a value of type '[NSHTTPCookie]'

查看:67
本文介绍了xcode 7无法将类型"[NSHTTPCookie]"的值分配给类型"[NSHTTPCookie]"的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚刚更新到Xcode7,并且在我正在使用的开放源代码库中的文件中遇到此错误时,尝试将项目切换为使用Swift 2.0语法.这是相关的代码:

I just updated to Xcode7 and am trying to switch my project to using the Swift 2.0 Syntax when I ran into this error in a file from an open source library I'm using. Here's the relevant code:

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]的值

The error reads: Cannot assign a value of type '[NSHTTPCookie]' to a value of type '[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返回类型是[NSObject : AnyObject]而不是cookiesWithResponseHeaderFields...

  • if let responseHeaders ... line - did add as? [String:String], because allHeadersFields return type is [NSObject : AnyObject] and not [String:String] required by cookiesWithResponseHeaderFields...

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

removed as! [NSHTTPCookie] - it has no sense, because cookiesWithResponseHeaderFields return type is already [NSHTTPCookie]

只需检查cookiesWithResponseHeaderFields签名:

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

请阅读如何问一个好问题.至少,您应该指出问题所在的行,等等.

Please read How do I ask a good question. At least, you should point out to lines where the problem is, etc.

这篇关于xcode 7无法将类型"[NSHTTPCookie]"的值分配给类型"[NSHTTPCookie]"的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆