2017-05-15 6 views
0

Warum ist dieses Square-Beispiel gerade für ihre README nicht funktioniert?Kann 'ausführen' mit einer Argumentliste vom Typ '(_)' nicht aufrufen

let callbackURL = URL(string: "OdinMobile://")! 
    do { 
     let amount = try SCCMoney(amountCents: money, currencyCode: "USD") 

     let request : SCCAPIRequest = 
      try SCCAPIRequest(
       callbackURL: callbackURL, 
       amount: amount, 
       userInfoString: userInfoString, 
       merchantID: nil, 
       notes: notes, 
       customerID: nil, 
       supportedTenderTypes: supportedTenderTypes, 
       clearsDefaultFees: clearsDefaultFees, 
       returnAutomaticallyAfterPayment: true 
      ) 

    } catch let error as NSError { 
     print(error.localizedDescription) 
    } 

    do { 
     try SCCAPIConnection.perform(request) 
    } catch let error as NSError { 
     print(error.localizedDescription) 
    } 

Ich bekomme eine Cannot invoke 'perform' with an argument list of type '(_)' mit einer zusätzlichen Nachricht von Overloads for 'perform' exist with these partially matching parameter lists: (SCCAPIRequest), (Selector!). Ich möchte für request eine SCCAPIRequest sein, warum liest es nicht als eins? Liegt es daran, dass es in einem do Block ist?

Antwort

2

Das do Schlüsselwort erstellt einen Rahmen innerhalb der geschweiften Klammern, wie eine if oder for Schleife, dh die Anforderung erstellen Sie innerhalb des ersten Bereichs ist und nicht verfügbar in den zweiten. Da Sie in beiden Fällen dasselbe mit dem gleichen Fehler machen, können Sie einfach den Aufruf perform in den gleichen Bereich verschieben.

let callbackURL = URL(string: "OdinMobile://")! 
do { 
    let amount = try SCCMoney(amountCents: money, currencyCode: "USD") 

    let request : SCCAPIRequest = 
     try SCCAPIRequest(
      callbackURL: callbackURL, 
      amount: amount, 
      userInfoString: userInfoString, 
      merchantID: nil, 
      notes: notes, 
      customerID: nil, 
      supportedTenderTypes: supportedTenderTypes, 
      clearsDefaultFees: clearsDefaultFees, 
      returnAutomaticallyAfterPayment: true 
     ) 
    try SCCAPIConnection.perform(request) 
} catch let error as NSError { 
    print(error.localizedDescription) 
} 
+0

Ich dachte, ich hätte es einfach selbst ausprobieren sollen. –

+0

@NilsGuillermin Bitte akzeptieren Sie diese Antwort, wenn Sie eine Chance bekommen ... Danke Kumpel! –

Verwandte Themen