是什么导致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
。
答
对于目前的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()
这就是它!谢谢!! – leonard 2014-11-04 22:25:44