2016-02-19 84 views
-3

的錯誤是: 初始值設定條件的結合必須有可選的類型,而不是「NSData的」 和 呼叫可以扔掉,但是沒有打上「嘗試」,而不是處理的錯誤如何將此函數轉換爲Swift 2?

class func loadMembersFromFile(path:String) -> [Member] //Function 
{ 
    var members:[Member] = [] 
    var error:NSError? = nil 
    if let data = NSData(contentsOfFile: path, options:[]), //data 
     json = NSJSONSerialization.JSONObjectWithData(data, options: []) as? NSDictionary, //my array (json) 
     team = json["team"] as? [NSDictionary] { // display json 
      for memberDictionary in team { //cylce for 
       let member = Member(dictionary: memberDictionary) 
       members.append(member) 
      } 
    } 
    return members 
} 
+1

請提供更多的信息如: - 你想達到什麼目的,修正你的拼寫有點難以理解你想要做什麼。 和歡迎。 – nakashu

回答

1

第一,您需要對可能拋出異常的方法使用do catch語法。其次,NSData初始值設定項不會生成Optional值,因此您不能將其置於if語句中。

class func loadMembersFromFile(path:String) -> [Member] //Function 
    { 
     var members:[Member] = [] 
     var error:NSError? = nil 
     do { 
      let data = try NSData(contentsOfFile: path, options:[]) 
      if let json = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? NSDictionary, 
      let team = json["team"] as? [NSDictionary] { 
       for memberDictionary in team { //cylce for 
        let member = Member(dictionary: memberDictionary) 
        members.append(member) 
       } 
      } 
     } catch { 
      //handle exceptions 
     } 
     return members 
    } 

請參閱documentation