Свифт код 2.x выглядит следующим образом:Обновления AWS DynamoDB код Swift 3 вызывает ошибку
extension Table {
func produceOrderedAttributeKeys(model: AWSDynamoDBObjectModel) -> [String] {
let keysArray = Array(model.dictionaryValue.keys)
var keys = keysArray as! [String]
keys = keys.sort()
if (model.classForCoder.respondsToSelector("rangeKeyAttribute")) {
let rangeKeyAttribute = model.classForCoder.rangeKeyAttribute!()
let index = keys.indexOf(rangeKeyAttribute)
if let index = index {
keys.removeAtIndex(index)
keys.insert(rangeKeyAttribute, atIndex: 0)
}
}
model.classForCoder.hashKeyAttribute()
let hashKeyAttribute = model.classForCoder.hashKeyAttribute()
let index = keys.indexOf(hashKeyAttribute)
if let index = index {
keys.removeAtIndex(index)
keys.insert(hashKeyAttribute, atIndex: 0)
}
return keys
}
}
Линия:
if (model.classForCoder.respondsToSelector("rangeKeyAttribute")) {
с Swift унаследованного компилятором дает предупреждение «Использование строкового литерала для Objective-C устарело, используйте #selector»
Он предоставляет возможность исправить его, whi ч изменяет его:
if (model.classForCoder.responds(to: #selector(AWSDynamoDBModeling.rangeKeyAttribute))) {
Однако я тогда получаю сообщение об ошибке сказав: «((Селектор) -> Bool)»
Невозможно вызвать значение, не являющуюся функцией типа
Я искал Google как сумасшедший, пытаясь понять, как сделать этот Swift 3 совместимым, но не повезло. Некоторые специалисты Swift 3 будут очень благодарны!