我想使用iOS Swift SDK使用DynamoDB。我将Facebook上的Cognito用作外部身份提供者。 Cognito工作正常 - 我已经测试了用户同步并且它工作正常,所以我相信我已经设置了身份验证。下面是我如何设置的SDK(我有我的身份池的实际值在我的代码):Swift DynamoDB映射器发送空值
let credentialsProvider = AWSCognitoCredentialsProvider(regionType:.USEast1,
identityPoolId:"<my-identity-pool-id>", identityProviderManager: FacebookProvider())
let configuration = AWSServiceConfiguration(region:.USEast1, credentialsProvider:credentialsProvider)
AWSServiceManager.default().defaultServiceConfiguration = configuration
这是我的DynamoDB映射类:
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
类中的字段。
这里是我如何实例映射器:
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文档例子了。但是,这里就是我回来的控制台代码执行时:
我碰上控制台登录了调试,它看起来像映射器不是从SavedItem
对象发送任何属性。下面是在控制台什么是对save
请求体:
Request body:
{"Key":{"userId":{},"timestamp":{}},"TableName":"my-table","AttributeUpdates":{}}
任何想法,为什么没有得到包括在保存请求主体的价值观?
使用AWS-SDK-IOS V2.6.1在夫特4在iOS 11.
这不是我的经验;我在Swift 4中使用它。这个问题似乎是模型中属性的类型。 – rpmartz
是的,我知道。但是从swift 4.0就只换Swift版本为Swift 3.2。并检查它是否工作。 – user3202457