2015-07-13 57 views
0

我剛剛更新到Xcode7,並試圖在我遇到此錯誤時將我的項目切換爲使用Swift 2.0語法在我使用的開源庫中的文件中。下面是相關的代碼:xcode 7不能將類型'[NSHTTPCookie]'的值賦值爲類型'[NSHTTPCookie]'的值

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]」

有我丟失的東西嗎?

回答

2

你的代碼改成這樣:

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...

  • [String:String]

    刪除as! [NSHTTPCookie] - 它沒有某種意義上說,因爲cookiesWithResponseHeaderFields返回類型已經[NSHTTPCookie]

只是檢查cookiesWithResponseHeaderFields簽名:

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

請閱讀How do I ask a good question。至少,你應該指出問題所在的線路等。

+0

這工作,謝謝!對於沒有指出具體的路線抱歉,並感謝參考。 – Pat

+0

不客氣。請記住 - 有關您提供的問題的更多信息(即使您認爲這不重要),更快的工作答案而無需其他問題。 – robertvojta

相關問題