亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SWIFT:呼叫中額外的爭論“錯誤”

SWIFT:呼叫中額外的爭論“錯誤”

開心每一天1111 2019-06-26 17:31:02
SWIFT:呼叫中額外的爭論“錯誤”目前,我正在使用SWIFT2.0和Xcode Beta 2開發我的第一個iOS應用程序,它讀取外部JSON,并在表視圖中生成包含數據的列表。然而,我遇到了一個奇怪的小錯誤,似乎無法修復:Extra argument 'error' in call下面是我的代碼片段:let task = session.dataTaskWithURL(url!, completionHandler: {data, response, error -> Void in             print("Task completed")             if(error != nil){                 print(error!.localizedDescription)             }             var err: NSError?             if let jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as? NSDictionary{                 if(err != nil){                     print("JSON Error \(err!.localizedDescription)")                 }                 if let results: NSArray = jsonResult["results"] as? NSArray{                     dispatch_async(dispatch_get_main_queue(), {                         self.tableData = results                        self.appsTableView!.reloadData()                     })                 }             }         })此錯誤將拋出在以下一行:if let jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as? NSDictionary{誰能告訴我在這里做錯了什么嗎?
查看完整描述

3 回答

?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

帶著SWIFT 2,簽名NSJSONSerialization已更改,以符合新的錯誤處理系統。

下面是一個如何使用它的示例:

do {
    if let jsonResult = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? NSDictionary {
        print(jsonResult)
    }} catch let error as NSError {
    print(error.localizedDescription)}

帶著SWIFT 3,名字,姓名NSJSONSerialization它的方法已經改變了,根據SWIFT API設計指南.

下面是同一個例子:

do {
    if let jsonResult = try JSONSerialization.jsonObject(with: data, options: []) as? [String:AnyObject] {
        print(jsonResult)
    }} catch let error as NSError {
    print(error.localizedDescription)}


查看完整回答
反對 回復 2019-06-26
?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

在SWIFT 2中,情況發生了變化,這些方法接受了error參數轉換為拋出錯誤的方法,而不是通過inout參數。通過查看蘋果文檔:

處理SWIFT中的錯誤:在SWIFT中,此方法返回一個非可選的結果,并使用拋出關鍵字標記,以指示在發生故障時拋出錯誤。

您可以在try表達式中調用此方法,并處理do語句的CATCH子句中的任何錯誤,如SWIFT編程語言中的錯誤處理(SWIFT 2.1),以及在使用SWIFT與Cocoa和Object-C(SWIFT 2.1)時的錯誤處理。

最短的解決辦法是使用try?返回nil如果發生錯誤:

let message = try? NSJSONSerialization.JSONObjectWithData(receivedData, options:.AllowFragments)if let dict = message as? NSDictionary {
    // ... process the data}

如果您也對錯誤感興趣,可以使用do/catch:

do {
    let message = try NSJSONSerialization.JSONObjectWithData(receivedData, options:.AllowFragments)
    if let dict = message as? NSDictionary {
        // ... process the data    }} catch let error as NSError {
    print("An error occurred: \(error)")}


查看完整回答
反對 回復 2019-06-26
?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

這在SWIFT 3.0中已經改變了。

 do{
            if let responseObj = try JSONSerialization.jsonObject(with: results, options: .allowFragments) as? NSDictionary{

                if JSONSerialization.isValidJSONObject(responseObj){
                    //Do your stuff here                }
                else{
                    //Handle error                }
            }
            else{
                //Do your stuff here            }
        }
        catch let error as NSError {
                print("An error occurred: \(error)") }


查看完整回答
反對 回復 2019-06-26
  • 3 回答
  • 0 關注
  • 717 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號