我是快速发展的新手,我正在尝试合并后端。我认为AWS将是实现我想要完成的工作的好方法。我目前正在尝试获取他们为您创建的示例项目文件,并且它有很多错误,这是令人难以置信的。我已经意识到AWS在Swift 2中创建了文件,因此在Swift 3中运行它们非常困难。
当我在xCode中打开代码时,我将代码转换为Swift 3,并在此之后对行进行了30次更改,只是试图摆脱我能做的所有错误。而现在我被卡住了。有些行我不知道该怎么做以解决它。我将在下面列出一些,但如果有人有关于最佳方式的任何提示,或者可以帮我修复下面的错误,我将非常感激。
1)这里的问题是model.classForCoder.responds(to: #selector(AWSDynamoDBModeling.rangeKeyAttribute))
。错误说“无法调用非函数类型的值((Selector - > Bool)!”
func produceOrderedAttributeKeys(_ model: AWSDynamoDBObjectModel) -> [String] {
let keysArray = Array(model.dictionaryValue.keys)
var keys = keysArray as! [String]
keys = keys.sorted()
if (model.classForCoder.responds(to: #selector(AWSDynamoDBModeling.rangeKeyAttribute))) {
let rangeKeyAttribute = model.classForCoder.rangeKeyAttribute!()
let index = keys.index(of: rangeKeyAttribute)
if let index = index {
keys.remove(at: index)
keys.insert(rangeKeyAttribute, at: 0)
}
}
2)“==生成Bool而不是预期的上下文结果类型'NSNumber'”
class func randomSampleBOOL() -> NSNumber {
// If random number is even number then return true, false for odd numbers
return self.randomNumber() % 2 == 0
}
3)问题出在loadNextPage(completionHandler)
行。 “参数传递给不带参数的调用”
func loadMoreResults() {
loading = true
paginatedOutput?.loadNextPage(completionHandler: {(error: NSError?) -> Void in
if error != nil {
print("Failed to load more results: \(error)")
DispatchQueue.main.async(execute: {
self.showAlertWithTitle("Error", message: "Failed to load more more results: \(error?.localizedDescription)")
})
}
else {
DispatchQueue.main.async(execute: {
self.results!.append(contentsOf: self.paginatedOutput!.items)
self.tableView.reloadData()
self.loading = false
})
}
})
}
4)问题在于objectMapper.load
。 无法转换类型'的值(AWSDynamoDBObjectModel?,NSError?) - > Void'到预期的参数类型'((AWSDynamoDBObjectModel?,错误?) - > Void)?'
func getItemWithCompletionHandler(_ completionHandler: @escaping (_ response: AWSDynamoDBObjectModel?, _ error: NSError?) -> Void) {
let objectMapper = AWSDynamoDBObjectMapper.default()
objectMapper.load(Orders.self, hashKey: "demo-email-3", rangeKey: 1111500000, completionHandler: {(response: AWSDynamoDBObjectModel?, error: NSError?) -> Void in
DispatchQueue.main.async(execute: {
completionHandler(response, error)
})
})
}
5)无法使用类型'的参数列表调用'scan'(Orders.Type,expression:AWSDynamoDBScanExpression,(AWSDynamoDBPaginatedOutput?,NSError?) - >())'
let objectMapper = AWSDynamoDBObjectMapper.default()
let scanExpression = AWSDynamoDBScanExpression()
scanExpression.filterExpression = "begins_with(#email, :email)"
scanExpression.expressionAttributeNames = ["#email": "email"]
scanExpression.expressionAttributeValues = [":email": "demo-"]
objectMapper.scan(Orders.self, expression: scanExpression) { (response: AWSDynamoDBPaginatedOutput?, error: NSError?) in
6)最后,有15个这样的实例方法'getItemWithCompletionHandler'几乎匹配协议'Table'的可选要求'getItemWithCompletionHandler',具有各种不同的方法名称等。这些只是警告,但我建议将其设为私有或添加@nonobjc
,我不知道应该做什么,如果有的话。
答案 0 :(得分:0)
未来Google员工的更新: 我设法通过将其更改为:
来解决第一个问题(left_lines)/2
Number 2我很困惑,因为评论说“返回true,false表示奇数”,但函数返回NSNumber。我把它更改为返回Bool并修复了错误,但这似乎是他们本来会犯的奇怪错误。我觉得这也会导致Swift 2出错。其余我还没弄明白...