2014-06-17 4 views
5

Ich versuche, das Beispiel LoopBack iOS-App in SwiftStrongLoop Loopback Beispiel in Swift

Create a LoopBack iOS app: part one

und ich habe einige Probleme zu übersetzen aus dem ObjectiveC

- (void) getBooks 
{ 
    //Error Block 
    void (^loadErrorBlock)(NSError *) = ^(NSError *error){ 
     NSLog(@"Error on load %@", error.description); 
    }; 
    void (^loadSuccessBlock)(NSArray *) = ^(NSArray *models){ 
     NSLog(@"Success count %d", models.count); 
     self.tableData = models; 
     [self.myTable reloadData]; 
    }; 
    //This line gets the Loopback model "book" through the adapter defined in AppDelegate 
    LBModelRepository *allbooks = [[booksAppDelegate adapter] repositoryWithModelName:prototypeName]; 
    //Logic - Get all books. If connection fails, load the error block, if it passes, call the success block and pass allbooks to it. 
    [allbooks allWithSuccess:loadSuccessBlock failure:loadErrorBlock]; 
}; 

hier zu implementieren meine Version

func getBooks() { 
    var errorBlock = { 
     (error: NSError!) -> Void in 
     NSLog("Error on load %@", error.description) 
    } 

    var successBlock = { 
     (models: NSArray!) -> Void in 
     NSLog("Success count %d", models.count) 
     self.tableData = models 
     self.booksTable.reloadData() 
    } 

    // get the "book" model 
    var allBooks: LBModelRepository = adapter.repositoryWithModelName(prototypeName) 

    // get all books 
    allBooks.allWithSuccess(successBlock, errorBlock) 
} 

aber ich bekomme einen Compiler-Fehler beim Aufruf von a llWithSuccess:

Die Ausdrücke vom Typ 'Void' können nicht in 'LBModelAllSuccessBlock!' konvertiert werden.

Was fehlt mir?

UPDATE:

Wenn ich den Erfolg Block wie folgt deklarieren, es funktioniert:

var successBlock = { 
     (models: AnyObject[]!) ->() in 
     self.tableData = models 
     self.booksTable.reloadData() 
    } 
+0

versuchen Definition Ihrer 'var's als Funktionen mit dem' func' Schlüsselwörter wie: ' func errorBlock() {} ' – Jack

+0

hast du das zum arbeiten bekommen? – ilan

+0

Sie können dieses schnelle Beispiel, das ich erstellt habe, überprüfen: https://github.com/kgoedecke/loopback-swift-user-example –

Antwort

1

Danke für die Antwort !!!!

Wenn jemand für die letzte Version von Swift und LoopBack iOS SDK suchen, es funktionierte für mich wie folgt aus:

func getBooks() { 
    // Error Block 
    let errorBlock = { 
     (error: NSError!) -> Void in 
     NSLog("Error on load %@", error.description) 
    } 

    // Success Block 
    let successBlock = { 
     (models: [AnyObject]!) ->() in 
     self.tableData = models 
     self.myTable.reloadData() 
    } 

    // This line gets the Loopback model "book" through the adapter defined in AppDelegate 
    let allBooks:LBPersistedModelRepository = AppDelegate.adapter.repositoryWithModelName(prototypeName, persisted: true) as! LBPersistedModelRepository 

    // Logic - Get all books. If connection fails, load the error block, if it passes, call the success block and pass allbooks to it. 
    allBooks.allWithSuccess(successBlock, failure: errorBlock) 
}