是什么导致DynamoDB UpdateItem在Swift中导致致命错误?

问题描述:

我正在使用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既没有帮助捕捉错误。

任何想法为什么?感谢

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

let dynamoDB = AWSDynamoDB.defaultDynamoDB() 

您使用的是默认- init方法不带任何参数,它会导致​​实例没有AWSServiceConfiguration

+0

这就是它!谢谢!! – leonard 2014-11-04 22:25:44

对于目前的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()