DynamoDB项目的某些属性为零

时间:2017-05-12 12:08:10

标签: ios swift string null amazon-dynamodb

在我的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个属性。我只看到String属性,没有其他3个(Float,Float,Boolean)。

当我尝试从扫描中的其中一个项目中获取Float属性时,我得到nil

看起来它只能获得字符串,而不是别的。

TableViewControllertableView(cellForRowAt:)我有这个代码从项目中获取属性:

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

我能够获得String类型的name属性,但是我无法获得Float类型的price属性。

如何解决此问题并使用扫描从DynamoDB表中获取Float和Boolean属性?

1 个答案:

答案 0 :(得分:0)

显然,我在Item.swift文件中使用了不同类型的价格变量。

而不是:

var price: Float?
var booleanValue: Bool?

我应该使用:

var price: NSNumber?
var booleanValue: NSNumber?

Item.swift档案。