2015-03-05 1 views
7

Ho controllato la sintassi per un periodo di gazillion qui, su GitHub, parse.com & altrove, senza fortuna. Il problema è quando sto chiamando per saveInBackgroundWithBlock PFObject ottengo il il seguente errore:Impossibile richiamare 'saveInBackgroundWithBlock'

Cannot invoke 'saveInBackgroundWithBlock' with an argument list of type '((Bool, NSError) -> Void)'

Sono su Xcode 6.3 beta 2. Tutti i quadri vengono caricati al progetto (tra cui Bulloni & Parse, ma non fornito da parse.com ParseCrashReporting & ParseUI), <Parse/Parse.h> & anche <Bolts/Bolts.h> vengono portati attraverso l'intestazione del ponte.

var score = PFObject(className: "score") 
    score.setObject("Rob", forKey: "name") 
    score.setObject(95, forKey: "scoreNumber") 
    score.saveInBackgroundWithBlock { 
     (success: Bool!, error: NSError) -> Void in 
     if success == true { 
      println("Score created with ID: \(score.objectId)") 
     } else { 
      println(error) 
     } 
    } 

Qualche idea?

risposta

7

Nel Swift 1.2 la dichiarazione di .saveInBackgroundWithBlock dovrebbe apparire così:

Void saveInBackgroundWithBlock(block: PFBooleanResultBlock?(Bool, NSError?) -> Void) 

quindi dovrebbe sono stati i seguenti:

score.saveInBackgroundWithBlock { 
     (success: Bool, error: NSError?) -> Void in 
+0

Questo mi ha appena salvato il bacon, grazie! :) – Alex

+2

Xcode 7 beta 5 mostra errore: 'Impossibile richiamare ' signUpInBackgroundWithBlock 'con una lista di argomenti di tipo' ((Bool, NSError?) -> Void) '' – orkenstein

9

Il parametro error si suppone che sia un implicito scartare facoltativo, ma non il success uno:

(success: Bool, error: NSError!) -> Void in 
      ^   ^

Tuttavia a meno che non è necessario specificare il tipo per qualsiasi motivo, vi suggerisco di utilizzare la chiusura semplicemente come :

(success, error) in 

meno proni a errori di dichiarazione del tipo.

+0

Grazie, caro signore, mi hai puntato nella giusta direzione ! Il tuo consiglio, tuttavia, non era esattamente corretto, per favore vedi la mia risposta qui sotto. –

+0

L'unica differenza è l'opzione implicitamente da scartare, che è sempre possibile dichiarare come facoltativo normale. Hai ricevuto un errore a causa di questo? – Antonio

+0

Sì, ricevo un errore ogni volta che cambio una di queste cose. Tuttavia, '(successo, errore) in' sembra funzionare, ma non è quello che volevo lì. –

1

Il metodo vuole il success e error variabili impostate come questo con il ! sul error:

(success: Bool, error: NSError!) 
      ^   ^

Ma che hai impostato il ! alla variabile sbagliata:

(success: Bool!, error: NSError) 

Come si vedere qui:

enter image description here

+0

Grazie per avermi indicato nella giusta direzione, per favore vedi http://stackoverflow.com/a/28898010/4327488 –