2014-07-03 9 views
7

Ho cercato molte ore cercando di trovare la soluzione a questo problema di chiusura in modo rapido. Ho trovato molte risorse per spiegare le chiusure ma per qualche ragione non riesco a farlo funzionare.Completamento gestore in Swift

Questo è il codice Objective-C che sto cercando di convertire in rapida:

[direction calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *response, NSError *error) { 
      NSLog(@"%@",[response description]); 
      NSLog(@"%@",[error description]); 

      }]; 

e la rapida sto provando, ma non funziona:

directions.calculateDirectionsWithCompletionHandler(response: MKDirectionsResponse?, error: NSError?) { 
    println(response.description) 
    println(error.description) 
} 

direzioni è un oggetto MKDirections.

Grazie!

risposta

10

Prova

directions.calculateDirectionsWithCompletionHandler ({ 
(response: MKDirectionsResponse?, error: NSError?) in 
     println(response?.description) 
     println(error?.description) 
    }) 
+1

Questo ha funzionato, grazie così tanto! Dio .. Chiusure .. XD Segnalo come risposta quando me lo consente. Grazie ancora! –

+0

Ottimo! Nessun problema. – Adithya

+0

o breve: 'directions.calculateDirectionsWithCompletionHandler ({(risposta, errore) in/* codice * /})' – David

1

per quanto riguarda la sintassi di Closures in Swift, e controllando il MKDirections Classe Riferimento:

enter image description here

Sembra la corretta chiusura qui dovrebbe essere un MKDirectionHandler, che definito come:

enter image description here

quindi il gestore completamento dovrebbe essere così:

direction.calculateDirectionsWithCompletionHandler({ (response: MKDirectionsResponse!, error: NSError!) ->() in 
    println(response.description) 
    println(error.description) 
    }) 
+0

Questo post è stato contrassegnato con bassa qualità. Nonostante la tua reputazione, aggiungi ulteriori spiegazioni. –

+0

@ Jean-RémyRevy, mio ​​male, mi dispiace. – holex

+0

nessun problema :). Adesso va bene :)! –

2

enter image description here

questo è il modo generale, un blocco/chiusura assomiglia a Swift.

se non è necessario utilizzare i parametri che è possibile fare in questo modo

directions.calculateDirectionsWithCompletionHandler ({ 
(_) in 
    // your code here 
    })