首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >迅速发送空值的DynamoDB映射程序

迅速发送空值的DynamoDB映射程序
EN

Stack Overflow用户
提问于 2017-09-29 16:28:53
回答 2查看 530关注 0票数 0

我正在尝试使用DynamoDB使用iOS Swift。我用Facebook作为外部身份提供者。科尼托很好--我已经测试过用户同步,它运行良好,所以我相信我已经设置了身份验证。下面是如何设置SDK (代码中有我的标识池的实际值):

代码语言:javascript
运行
复制
let credentialsProvider = AWSCognitoCredentialsProvider(regionType:.USEast1,
                                                          identityPoolId:"<my-identity-pool-id>", identityProviderManager: FacebookProvider())

    let configuration = AWSServiceConfiguration(region:.USEast1, credentialsProvider:credentialsProvider)
    AWSServiceManager.default().defaultServiceConfiguration = configuration

下面是我的DynamoDB映射类:

代码语言:javascript
运行
复制
import Foundation
import AWSDynamoDB

class SavedItem : AWSDynamoDBObjectModel, AWSDynamoDBModeling {

    var userId : Int?
    var timestamp : Int?

    class func dynamoDBTableName() -> String {
        return "my-table"
    }

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

    class func rangeKeyAttribute() -> String {
        return "timestamp"
    }
  }

我已经验证了我的代码有正确的表名和属性名,表上的散列键和范围键值与我的SavedItem类中的字段相同,包括区分大小写。

下面是我如何实例化映射器:

代码语言:javascript
运行
复制
let dynamoDBObjectMapper = AWSDynamoDBObjectMapper.default()

let savedItem = SavedItem()
savedItem?.userId = 1
savedItem?.timestamp = 2

dynamoDBObjectMapper.save(savedItem!).continueWith(block: { (task:AWSTask<AnyObject>!) -> Any? in
    if let error = task.error as? NSError {
        print("The request failed. Error: \(error)")
    } else {
        print("Save callback executing")
    }

    return nil
})

这段代码或多或少是从AWS文档示例中直接得出的。但是,下面是我在控制台执行代码时得到的信息:

代码语言:javascript
运行
复制
Error Domain=com.amazonaws.AWSCognitoIdentityErrorDomain Code=0 "(null)" UserInfo={__type=com.amazon.coral.validate#ValidationException, message=Supplied AttributeValue is empty, must contain exactly one of the supported datatypes}

我将控制台登录到调试中,看起来映射器没有从SavedItem对象发送任何属性。下面是save请求主体的控制台中的内容:

代码语言:javascript
运行
复制
Request body:
{"Key":{"userId":{},"timestamp":{}},"TableName":"my-table","AttributeUpdates":{}}

知道为什么这些值没有包含在保存请求体中吗?

在iOS 11上使用AWS-SDK-IOSv2.6.1in Swift 4。

EN

Stack Overflow用户

发布于 2018-01-08 10:29:45

是的,我也面临着同样的问题。而在挣扎了3天之后,我发现AWSDynamoDBObjectModel不支持在斯威夫特4。请尝试在迅捷3版本。你会成功的。

票数 -3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46493204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档