2017-10-04 31 views
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之外,還有其他解決方案嗎?謝謝。

+0

字符串應該爲模型類型工作。我有一個Swift 4項目,它對我來說工作得很好。爲了幫助我更好地進行調試,您能否確認這些是表中唯一的兩個屬性?像get/insert/query這樣的操作是否正常工作?是否僅使用過濾器進行掃描?什麼是您使用的SDK版本? –

回答

相關問題