5

サンプルの LoopBack iOS アプリを Swift に実装しようとしています

LoopBack iOS アプリを作成する: パート 1

そして、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];
};

ここに私のバージョンがあります

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)
}

しかし、allWithSuccess の呼び出しでコンパイラ エラーが発生します。

式タイプ「Void」をタイプ「LBModelAllSuccessBlock!」に変換できません。

私は何が欠けていますか?

アップデート:

次のように成功ブロックを宣言すると、機能します。

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

1 に答える 1

1

答えてくれてありがとう!!!!

誰かが Swift および LoopBack iOS SDK の最新バージョンを探している場合、次のように機能しました。

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)
}
于 2015-12-22T08:56:31.310 に答える