【问题标题】:Can't retrieve data from DynamoDB using MobileHub无法使用 MobileHub 从 DynamoDB 检索数据
【发布时间】:2016-11-29 09:38:20
【问题描述】:

我可以成功从 DynamoDB 表中检索数据。

func myRequest(completionHandler: (response: AWSDynamoDBObjectModel?, error: NSError?) -> Void) {

let objectMapper = AWSDynamoDBObjectMapper.defaultDynamoDBObjectMapper()

objectMapper.load(myModel.self,
                          hashKey: AWSIdentityManager.defaultIdentityManager().identityId!,
                          rangeKey: nil,
                          completionHandler: {(response: AWSDynamoDBObjectModel?, error: NSError?) -> Void in
            dispatch_async(dispatch_get_main_queue(), {
                completionHandler(response: response, error: error)
            })
        })


    }

完成处理程序抱怨响应为零,但日志表明有一个响应,其内容是预期的。

因此,将 JSON 响应映射到表的模型 myModel 时似乎出现了问题。

为了获得myModel,我只是从 Mobile Hub 中获取了示例应用程序,并将现有字段替换为我使用的字段。

【问题讨论】:

    标签: swift amazon-dynamodb aws-mobilehub


    【解决方案1】:

    问题已解决:模型属性包含大写字母。删除它们使该过程正常工作。

    以下是非工作代码。在 DynamoDB 上的项目字段名称必须以大写字母开头。然后我按照这个规则创建了属性,并添加了前缀下划线。

    class MyModel: AWSDynamoDBObjectModel, AWSDynamoDBModeling {
    
    var _UserId: String?
    var _ArticleId: String?
    
    
    class func dynamoDBTableName() -> String {
    
        return "myTable"
    }
    
    class func hashKeyAttribute() -> String {
    
        return "_UserId"
    }
    
    class func rangeKeyAttribute() -> String {
    
        return "_ArticleId"
    }
    
    override class func JSONKeyPathsByPropertyKey() -> [NSObject : AnyObject] {
        return [
               "_UserId" : "UserId",
               "_ArticleId" : "ArticleId",
    
        ]
    }
    

    }

    这是工作代码:

    class MyModel: AWSDynamoDBObjectModel, AWSDynamoDBModeling {
    
    var _userId: String?
    var _articleId: String?
    
    
    class func dynamoDBTableName() -> String {
    
        return "myTable"
    }
    
    class func hashKeyAttribute() -> String {
    
        return "_userId"
    }
    
    class func rangeKeyAttribute() -> String {
    
        return "_articleId"
    }
    
    override class func JSONKeyPathsByPropertyKey() -> [NSObject : AnyObject] {
        return [
               "_userId" : "UserId",
               "_articleId" : "ArticleId",
    
        ]
    }
    

    }

    很奇怪,不是吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-28
      • 2018-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-27
      • 1970-01-01
      相关资源
      最近更新 更多