在我的 Swift 编写的 iOS 应用程序上,我连接了 DynamoDB 服务。
HomeViewController
,我正在扫描 DynamoDB 账户中的一个表,并打印结果以检查它是否有效:
let scanExpression = AWSDynamoDBScanExpression()
scanExpression.filterExpression = "begins_with (id, :id)"
scanExpression.expressionAttributeValues = [":id": GlobalVars.id]
GlobalVars.dynamoDBObjectMapper.scan(Item.self, expression: scanExpression).continueWith(block: { (task:AWSTask<AWSDynamoDBPaginatedOutput>!) -> Any? in
if let error = task.error as NSError? {
print("The request failed. Error: (error)")
} else if let paginatedOutput = task.result {
for item in paginatedOutput.items as! [Item] {
print("items", item)
GlobalVars.items += [item]
print("items array:", GlobalVars.items)
}
GlobalVars.numberOfItems = paginatedOutput.items.count
}
return ()
})
每次在for-in
循环中,它都会打印从表中获取的项目。每个项目都有自己的 7 个属性,但是当它打印它时,我只看到其中的 4 个属性。我只看到字符串属性,没有其他 3 个属性(浮点型、浮点型、布尔型(。
当我尝试从扫描中获得的其中一个项目获取 Float 属性时,我得到nil
.
看起来它只能获得字符串,而没有其他任何东西。
在tableView(cellForRowAt:)
TableViewController
中,我有以下代码,它从项目中获取属性:
let item: Item = items[indexPath.row]
let name: String = item.name!
cell.itemNameLabel.text = name
let priceFloat: Float = item.price!
let price: String = priceFloat.description
cell.itemPriceLabel.text = price
我能够获得字符串类型的name
属性,但我无法获得浮点类型的price
属性。
如何解决此问题并使用扫描从 DynamoDB 表中获取浮点型和布尔属性?
显然,我在Item.swift
文件中的价格变量使用了不同的类型。
而不是:
var price: Float?
var booleanValue: Bool?
我应该使用:
var price: NSNumber?
var booleanValue: NSNumber?
在Item.swift
文件上。