2016-05-28 4 views
-2

Extra-Argument 'Fehler' in CallExtra Argument Swift?

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) // This the error line 
     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!].Player(player!) 

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

       checkResults() 

      } 

     } 


    } 
+0

Zu den Leuten, die abstimmen, um die Frage zu schließen, nein, es ist klar, was gefragt wird. – TofuBeer

+0

Swift wurde zu "throws" anstelle von in-out-Fehlern geändert. Siehe https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/AdoptingCocoaDesignPatterns.html –

+1

Es gibt Dutzende von Fragen über "Extra Argument" Fehler 'in Anruf "(z. B. in der Liste Verwandte). Eine Suche nach dem Fehler "JSONObjectWithData Extra argument" bei Aufruf "zeigt die Lösung sofort an. –

Antwort

0

Wahrscheinlich versuchen Sie einen Swift 1.x Anruf mit einem Swift 2.x-Compiler zu verwenden.

Swift hat eine große Änderung zwischen 1 und 2 durchlaufen, jetzt löst die Methode (und die meisten anderen, die Fehler melden) eine Ausnahme aus, anstatt ein Fehlerargument zu übergeben.

Die current documentation zeigt die Signatur als:

class func JSONObjectWithData(_ data: NSData, 
        options opt: NSJSONReadingOptions) throws -> AnyObject 

zu sehen, wie Ausnahmen bei der documentation aussehen Hand.