适用于 Swift 3.0 的 AWSDynamoDB 2.4.9 - [AWSDynamoDBQueryExpression setKeyConditionExpression:]:发送到实例的无法
Posted
技术标签:
【中文标题】适用于 Swift 3.0 的 AWSDynamoDB 2.4.9 - [AWSDynamoDBQueryExpression setKeyConditionExpression:]:发送到实例的无法识别的选择器【英文标题】:AWSDynamoDB 2.4.9 for Swift 3.0 - [AWSDynamoDBQueryExpression setKeyConditionExpression:]: unrecognized selector sent to instance 【发布时间】:2016-09-30 06:11:03 【问题描述】:刚刚在 OS X El Capitan 版本 10.11.5 上升级到 Swift 3.0 (swiftlang-800.0.46.2 clang-800.0.38) 和 XCode 版本 8.0 (8A218a)。 AWSDynamoDB 的 Pod 安装/更新到 2.4.9。
let expression = AWSDynamoDBQueryExpression()
expression.keyConditionExpression = "bn = Test"
导致我的应用程序因我尝试放入字符串中的所有内容而崩溃:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AWSDynamoDBQueryExpression setKeyConditionExpression:]: unrecognized selector sent to instance 0x6080000747c0'
我之前在查询中使用了 expression.hashKeyValues,它运行良好,但在最新版本中已将其删除。我一直在使用它来模拟我的更改: https://github.com/awslabs/aws-sdk-ios-samples/blob/master/DynamoDBObjectMapper-Sample/Swift/DynamoDBSampleSwift/DDBSearchViewController.swift
寻找有关我是否错误地使用 keyConditionExpression、应该使用其他东西、需要更新到其他东西或者此错误消息是否是红鲱鱼等的指导。
谢谢!
【问题讨论】:
【参考方案1】:您的代码应如下所示:
let objectMapper = AWSDynamoDBObjectMapper.defaultDynamoDBObjectMapper()
let queryExpression = AWSDynamoDBQueryExpression()
queryExpression.keyConditionExpression = "#hashAttribute = :hashAttributeWithComplexName"
queryExpression.expressionAttributeNames = ["#hashAttribute": "hashAttribute"]
queryExpression.expressionAttributeValues = [":hashAttribute": value]
这是一些标题文档,它提供了关于哪个方法执行哪个操作的上下文:
/**
The condition that specifies the key value(s) for items to be retrieved by the Query action. For more information, see [AWSDynamoDBQueryInput keyConditionExpression]
For example, you may set keyConditionExpression to `hashAttributeName = :hashVal AND rangeAttributeName = :rangeVal` where `hashAttributeName` and `rangeAttributeName` is the attribute name of the hash key and range key respectively. Then you can set `expressionAttributeValues` to `@@":hashVal" : @"myHashValue", @":rangeVal" : @100`.
@see [AWSDynamoDBQueryInput keyConditionExpression]
@see expressionAttributeNames
@see expressionAttributeValues
*/
public var keyConditionExpression: String?
/**
One or more substitution tokens for attribute names in an expression.
@see [AWSDynamoDBQueryInput expressionAttributeNames]
*/
public var expressionAttributeNames: [String : String]?
/**
One or more values that can be substituted in an expression.
@see [AWSDynamoDBQueryInput expressionAttributeValues]
*/
public var expressionAttributeValues: [String : AnyObject]?
【讨论】:
以上是关于适用于 Swift 3.0 的 AWSDynamoDB 2.4.9 - [AWSDynamoDBQueryExpression setKeyConditionExpression:]:发送到实例的无法的主要内容,如果未能解决你的问题,请参考以下文章
如何在 swift 3.0 中制作 5*8 集合视图 [关闭]
json 适用于Authentiq Connect API的OpenAPI 3.0