2016-07-29 37 views
2

當我試圖使用本指南編寫Swift在dynamoDb表掃描:預計從宣言目標C轉換爲雨燕

http://docs.aws.amazon.com/mobile/sdkforios/developerguide/dynamodb_om.html

但它主要是在客觀C.所寫的,我就轉化爲斯威夫特但是當我這樣做時,我得到了「預期的聲明錯誤」。

這是的OBJ C代碼(這個作品):

AWSDynamoDBObjectMapper *dynamoDBObjectMapper = [AWSDynamoDBObjectMapper defaultDynamoDBObjectMapper]; 
AWSDynamoDBScanExpression *scanExpression = [AWSDynamoDBScanExpression new]; 
scanExpression.limit = @10; 

[[dynamoDBObjectMapper scan:[Book class] 
       expression:scanExpression] 
continueWithBlock:^id(AWSTask *task) { 
    if (task.error) { 
     NSLog(@"The request failed. Error: [%@]", task.error); 
    } 
    if (task.exception) { 
     NSLog(@"The request failed. Exception: [%@]", task.exception); 
    } 
    if (task.result) { 
     AWSDynamoDBPaginatedOutput *paginatedOutput = task.result; 
     for (Book *book in paginatedOutput.items) { 
      //Do something with book. 
     } 
    } 
    return nil; 
}]; 

夫特翻譯(擁有預期聲明錯誤線路3:scanExpression.limit = 10):

var dynamoDBObjectMapper: AWSDynamoDBObjectMapper = AWSDynamoDBObjectMapper.defaultDynamoDBObjectMapper() 
var scanExpression: AWSDynamoDBScanExpression = AWSDynamoDBScanExpression() 
scanExpression.limit = 10 
dynamoDBObjectMapper.scan(Book.self, expression: scanExpression).continueWithBlock({(task: AWSTask) -> id in 
    if task.error { 
     print("The request failed. Error: [\(task.error)]") 
    } 
    if task.exception { 
     print("The request failed. Exception: [\(task.exception)]") 
    } 
    if task.result { 
     var paginatedOutput: AWSDynamoDBPaginatedOutput = task.result 
     for book: Book in paginatedOutput.items { 
      //Do something with book. 
      //Do something with book. 
     } 
    } 
    return nil 
}) 

感謝你的幫助

+0

您在使用雨燕2.2? –

+0

錯誤實際上顯示'@ 10'?因爲這是一個Objective-C語句...... –

+0

@VladimirNul這是我寫這個問題時的一個錯誤。如圖所示,實際代碼位於第3行。我編輯它。 –

回答

1

你正在編譯這個代碼在一個文件中。您不能將分配作爲文件中的頂級語句。

嘗試像(使用慣用SWIFT):

class Foo { 

    var dynamoDBObjectMapper = AWSDynamoDBObjectMapper.defaultDynamoDBObjectMapper() 

    var scanExpression = AWSDynamoDBScanExpression() 

    func doScan() { 
    scanExpression.limit = 10 
    dynamoDBObjectMapper.scan(Book.self, expression: scanExpression).continueWithBlock { 
     (task: AWSTask) -> id in 
     if task.error { 
     print("The request failed. Error: [\(task.error)]") 
     } 

     if task.exception { 
     print("The request failed. Exception: [\(task.exception)]") 
     } 

     if task.result { 
     var paginatedOutput: AWSDynamoDBPaginatedOutput = task.result 
     for book: Book in paginatedOutput.items { 
      //Do something with book. 
      //Do something with book. 
     } 
     } 
    return nil 
    } 
    } 
} 

或實現了雨燕腳本文件:

#! /bin/env swift 

// Swift statements 

[EOF] 
+0

感謝@GoZoner,感謝幫助 –