iOS DynamoDB Object Mapper加载不会返回所有属性

时间:2016-02-01 10:40:51

标签: swift2 amazon-dynamodb

我在我的iPad应用程序中运行以下功能,通过它的哈希键(IdName)获取一个项目。 这个表只包含一个Hashkey(No Range键可用),但是当我运行它时,它返回一个只包含HashKey值的结果对象(与我传递的相同)。结果中没有其他属性(IdValue)。我在这里做错了什么?

func getCurrentFinalReportNumber()->Int
{
    let dynamoDBObjectMapper = AWSDynamoDBObjectMapper.defaultDynamoDBObjectMapper()

    var currentId :Int = -1

    dynamoDBObjectMapper .load(DDBIDStoreTableRow.self, hashKey: "FinalReportNumber", rangeKey: nil) .continueWithExecutor(AWSExecutor.mainThreadExecutor(), withBlock: { (task:AWSTask!) -> AnyObject! in
        if (task.error == nil) {
            if (task.result != nil) {
                let resultRow :DDBIDStoreTableRow = task.result as! DDBIDStoreTableRow
                print(resultRow.IdValue)
                currentId = Int(resultRow.IdValue!)
            }
        } else {
            print("Error: \(task.error)")

            let alert = SCLAlertView()
            alert.addButton("Close", colorButtonBackground: Constants.InspectionTypes.colorClose) {}
            alert.showCloseButton = false
            alert.showError("", subTitle: (task.error?.description)!)


        }
        return nil
    }).waitUntilFinished()


    return currentId
} 



class DDBIDStoreTableRow :AWSDynamoDBObjectModel ,AWSDynamoDBModeling  {

    var IdName:String? //HK
    var IdValue:Int? = -1


    class func dynamoDBTableName() -> String! {
        return AWSIDStoreDynamoDBTableName
    }

    class func hashKeyAttribute() -> String! {
        return "IdName"
    }


    //MARK: NSObjectProtocol hack
    override func isEqual(object: AnyObject?) -> Bool {
        return super.isEqual(object)
    }

    override func `self`() -> Self {
        return self
    }

}

Snapshot of the table being queried

1 个答案:

答案 0 :(得分:0)

刚发现错误。问题在于映射类的数据类型。早些时候它是

var IdValue:Int? = -1

但是,一旦我将Int更改为NSNumber,如下所示。它开始工作正常

var IdValue:NSNumber? = -1