更新DynamoDB中特定项目的属性(Swift)

时间:2016-01-17 02:26:31

标签: ios swift amazon-web-services amazon-dynamodb

我想从DynamoDB表中获取一个特定的项目,该表由其唯一的分区键定义,这是我传递给该方法的字符串。我想从" false"中更改其中一个字符串属性。 to" true"。

这是我到目前为止的代码

        var updatedValue: AWSDynamoDBAttributeValue = AWSDynamoDBAttributeValue()
        updatedValue.S = "true"

        var updateInput: AWSDynamoDBUpdateItemInput = AWSDynamoDBUpdateItemInput()
        updateInput.tableName = "knot-listings"
        updateInput.key = ["ID": self.ID]
        var valueUpdate: AWSDynamoDBAttributeValueUpdate = AWSDynamoDBAttributeValueUpdate()
        valueUpdate.value = updatedValue
        valueUpdate.action = AWSDynamoDBAttributeAction.Put
        updateInput.attributeUpdates = ["Updated": valueUpdate]
        updateInput.returnValues = AWSDynamoDBReturnValue.UpdatedNew

        self.dynamoDB.updateItem(updateInput).waitUntilFinished()

self.ID是指唯一标识符字符串。我想选择一个名为" sold"并将其值更改为" true"。

1 个答案:

答案 0 :(得分:0)

我实际上使用了您的代码作为指南。

不要使用

self.dynamoDB.updateItem(updateInput).waitUntilFinished()

但相反

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


    }

    return nil

})

完全

    var updatedValue: AWSDynamoDBAttributeValue = AWSDynamoDBAttributeValue()
    updatedValue.S = "true"

    var updateInput: AWSDynamoDBUpdateItemInput = AWSDynamoDBUpdateItemInput()
    updateInput.tableName = "knot-listings"
    updateInput.key = ["ID": self.ID]
    var valueUpdate: AWSDynamoDBAttributeValueUpdate = AWSDynamoDBAttributeValueUpdate()
    valueUpdate.value = updatedValue
    valueUpdate.action = AWSDynamoDBAttributeAction.Put
    updateInput.attributeUpdates = ["attributeName": newAttributeValue]
    updateInput.returnValues = AWSDynamoDBReturnValue.UpdatedNew


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

    return nil

})