1
我最近將項目更新爲Swift 4,現在當我掃描我的Amazon數據庫時,屬性返回nil。這裏是我的掃描代碼:AWS DynamoDB for iOS字符串屬性返回無
let scanExpression = AWSDynamoDBScanExpression()
scanExpression.filterExpression = "contains(Name, :name)"
scanExpression.expressionAttributeValues = [":name": (user?.username)!]
dynamoDBObjectMapper.scan(DBPerson.self, expression: scanExpression).continueWith(block: { (task:AWSTask!) -> Any? in
if let error = task.error as NSError? {
print("The request failed. Error: \(error)")
} else if let paginatedOutput = task.result {
DispatchQueue.main.async(execute: {
self.people.removeAll()
for person in paginatedOutput.items as! [DBPerson] {
self.people += [person] //breakpoint here
}
self.tableView.reloadData()
})
}
return nil
})
而且我DBPerson類:
import AWSDynamoDB
class DBPerson : AWSDynamoDBObjectModel, AWSDynamoDBModeling {
var Name: String?
var Occupation: String?
class func dynamoDBTableName() -> String {
return "People"
}
class func hashKeyAttribute() -> String {
return "Name"
}
}
我設置掃描循環中的斷點來看看我的屬性,他們總是回來的零。我的項目在更新到Swift 4之前正在工作,在我的表中顯示屬性。我試着改變Name和Occupation(在DBPerson類中)類型,比如NSString,NSArray,甚至像Substring和CFString一樣在黑暗中拍攝。
我的DynamoDB表存在其中的值,正確的項數返回,但屬性值始終爲零。這裏是我的表中的示例項目:
{
"Name": "Bill",
"Occupation": "Firefighter"
}
除了轉換回Swift 3之外,還有其他解決方案嗎?謝謝。
字符串應該爲模型類型工作。我有一個Swift 4項目,它對我來說工作得很好。爲了幫助我更好地進行調試,您能否確認這些是表中唯一的兩個屬性?像get/insert/query這樣的操作是否正常工作?是否僅使用過濾器進行掃描?什麼是您使用的SDK版本? –