2016-01-10 4 views
1

У меня есть эти две функции:Свифт Swift 2

func handleReceivedDataWithNotification(notification:NSNotification){ 
     let userInfo = notification.userInfo! as Dictionary 
     let receivedData:NSData = userInfo["data"] as! NSData 

     let message = NSJSONSerialization.JSONObjectWithData(receivedData, options: NSJSONReadingOptions.AllowFragments, error: nil) as NSDictionary 
     let senderPeerId:MCPeerID = userInfo["peerID"] as! MCPeerID 
     let senderDisplayName = senderPeerId.displayName 

     if message.objectForKey("string")?.isEqualToString("New Game") == true{ 
      let alert = UIAlertController(title: "TicTacToe", message: "\(senderDisplayName) has started a new Game", preferredStyle: UIAlertControllerStyle.Alert) 

      alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil)) 

      self.presentViewController(alert, animated: true, completion: nil) 

      resetField() 
     }else{ 
      var field:Int? = message.objectForKey("field")?.integerValue 
      var player:String? = message.objectForKey("player") as? String 

      if field != nil && player != nil{ 
       fields[field!].player = player 
       fields[field!].setPlayer_1(player!) 

       if player == "x"{ 
        currentPlayer = "o" 
       }else{ 
        currentPlayer = "x" 
       } 

       checkResults() 

      } 

     } 


    } 


    func fieldTapped (recognizer:UITapGestureRecognizer){ 
     let tappedField = recognizer.view as! TTTImageView 
     tappedField.setPlayer_1(currentPlayer) 

     let messageDict = ["field":tappedField.tag, "player":currentPlayer] 

     let messageData = NSJSONSerialization.dataWithJSONObject(messageDict, options: NSJSONWritingOptions.PrettyPrinted, error: nil) 

     var error:NSError? 

     appDelegate.mpcHandler.session.sendData(messageData, toPeers: appDelegate.mpcHandler.session.connectedPeers, withMode: MCSessionSendDataMode.Reliable, error: &error) 

     if error != nil{ 
      print("error: \(error?.localizedDescription)") 
     } 

     checkResults() 


    } 

Если я пытаюсь запустить их в Swift 2, потому что я теперь модернизирован я получаю эти ошибки:

Extra argument 'error' in call. 

я получаю эту ошибку по следующим адресам:

let message = NSJSONSerialization.JSONObjectWithData(receivedData, options: NSJSONReadingOptions.AllowFragments, error: nil) as NSDictionary 

let messageData = NSJSONSerialization.dataWithJSONObject(messageDict, options: NSJSONWritingOptions.PrettyPrinted, error: nil) 

Что нужно сделать, чтобы исправить это?

Я попытался добавить попытку и поймать и сделать, но тогда остальная часть программы ломается, потому что переменные не инициализируются.

Спасибо за любую помощь, которую вы можете предоставить.

ответ

0

Просто удалите аргумент error в конце и замените его блоком try/catch.

do 
{ 
    moc.hasChanges 
    try moc.save() 
} 
catch let error as NSError 
{ 
    NSLog("Unresolved error \(error), \(error.userInfo)") 
} 
+0

«вызов может быть пропущен, но не помечен с помощью try» –

+0

Да, некоторые вызовы теперь используют блоки try-catch вместо ошибок args. Я отредактировал свой вопрос, чтобы вы могли легко видеть, что ожидается. – Aeradriel

Смежные вопросы