А затем выполните операцию с помощью AWSDynamoDBObjectMapper! Удачи!

у получить ответ без значения атрибута: там заhttps://stackoverflow.com/a/45952329/5921575):

Error Domain=com.amazonaws.AWSCognitoIdentityErrorDomain Code=0 "(null)" 
UserInfo={__type=com.amazon.coral.validate#ValidationException, 
message=Value provided in ExpressionAttributeValues unused in expressions: keys: {:status}}

Вот код:

queryExpression.keyConditionExpression = "#userId= :userId"
queryExpression.expressionAttributeNames = ["#userId":"userId", "#status":"status"]
queryExpression.expressionAttributeValues = [":userId":userID, ":status":"accept"]
queryExpression.projectionExpression = "#status"

Я могу обойтись без ": status": "accept", но я не хочу получать много элементов, которые не имеют значения accept. Я не могу найти ответ по этой ссылке или где-либо еще в stackoverflow:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionAttributeNames.html

Спасибо!

Ответы на вопрос(1)

#status", а другим словом, которое не является статусом Статус - это зарезервированное слово, поэтому не используйте его для выражения проекции. Смотрите здесь, чтобы узнать, что делать, когда вам нужно использовать зарезервированное слово:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionAttributeNames.html#Expressions.ExpressionAttributeNames.ReservedWords

userId, с другой стороны, не требует выражения проекции, потому что это не зарезервированное слово. Смотрите здесь для списка зарезервированных слов:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html

Однако вам не нужно выражение проекции. Вы можете просто использовать код ниже. Определите «queryExpression.expressionAttributeNames», чтобы создать замещающее имя для значения атрибута состояния. Здесь я использовал фразу «statusVal» в качестве замены.

Попробуй это. (У меня это сработало)

let queryExpression = AWSDynamoDBQueryExpression()
queryExpression.expressionAttributeNames = ["#statusVal":"status"] // Using statusVal because it is not reserved. You only need statusVal here because it is the only attribute that also happens to be an AWS reserved word.
queryExpression.keyConditionExpression = "userId = :uId AND #statusVal = :sV"
queryExpression.expressionAttributeValues = [
     ":uId" : String(describing: userId),
     ":sV" : "accept"]

А затем выполните операцию с помощью AWSDynamoDBObjectMapper! Удачи!

Ваш ответ на вопрос