我想使用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