2014-11-04 194 views
2

我正在使用Swift讓我的應用程序更新DynamoDB上的項目。我遵循示例https://github.com/aws/aws-sdk-ios/blob/master/AWSiOSSDKTests/AWSDynamoDBTests.m#L244,「 - (void)testUpdateItem」方法。我的代碼如下:是什麼導致DynamoDB UpdateItem在Swift中導致致命錯誤?

var dynamoDB = AWSDynamoDB() 

var hashValue: AWSDynamoDBAttributeValue = AWSDynamoDBAttributeValue() 
hashValue.S = userID 
var updatedValue: AWSDynamoDBAttributeValue = AWSDynamoDBAttributeValue() 
updatedValue.S = updatedContent 

var updateInput: AWSDynamoDBUpdateItemInput = AWSDynamoDBUpdateItemInput() 
updateInput.tableName = kAWSDynamoDBMoEndpointARNTableName 
updateInput.key = ["UserID": hashValue] 
var valueUpdate: AWSDynamoDBAttributeValueUpdate = AWSDynamoDBAttributeValueUpdate() 
valueUpdate.value = updatedValue 
valueUpdate.action = AWSDynamoDBAttributeAction.Put 
updateInput.attributeUpdates = ["Updated": valueUpdate] 
updateInput.returnValues = AWSDynamoDBReturnValue.UpdatedNew 

dynamoDB.updateItem(updateInput).waitUntilFinished() 

然而,當我運行的代碼,它總是返回致命錯誤:意外發現零而展開的可選值。看看這個錯誤,我發現它是從Swift._fatalErrorMessage(Swift.StaticString,Swift.StaticString,Swift.StaticString,Swift.Uint) - >()線程1:EXC_BREAKPOINT(code = EXC_ARM_BREAKPOINT,subcode = 0xe7ffdefe)

我沒有使用.continueWithBlock或.continueWithSuccessBlock cuz既沒有幫助捕捉錯誤。

任何想法爲什麼?感謝

回答

0

你需要得到的​​實例如下:

let dynamoDB = AWSDynamoDB.defaultDynamoDB() 

您使用的是默認- init方法不帶任何參數,它會導致​​實例沒有AWSServiceConfiguration

+0

這就是它!謝謝!! – leonard 2014-11-04 22:25:44

0

對於目前的AWS,發現這適用於在Swift中發佈updateItem。 //的

dynamoDB.updateItem(updateInput) .continueWithExecutor(AWSExecutor.mainThreadExecutor(), withBlock: { (task:AWSTask!) -> AnyObject! in 
     if (task.error == nil) { 

      log.debug("task.error == nil") 

     } 

     return nil 

    }) 

代替

dynamoDB.updateItem(updateInput).waitUntilFinished()