gpt4 book ai didi

ios - Dynamo DB 无法保存数据

转载 作者:行者123 更新时间:2023-11-28 05:56:27 24 4
gpt4 key购买 nike

我尝试了很多不同的方法来将项目保存到 Dynamo DB,但是我总是遇到同样的错误:

UserInfo={__type=com.amazon.coral.validate#ValidationException, message=Supplied AttributeValue is empty, must contain exactly one of the supported datatypes}

这是我的模型文件:

//  ImageTable.swift
// MySampleApp
//
//
// Copyright 2018 Amazon.com, Inc. or its affiliates (Amazon). All Rights Reserved.
//
// Code generated by AWS Mobile Hub. Amazon gives unlimited permission to
// copy, distribute and modify it.
//
// Source code generated from template: aws-my-sample-app-ios-swift v0.21
//

import Foundation
import UIKit
import AWSDynamoDB

class ImageTable: AWSDynamoDBObjectModel, AWSDynamoDBModeling {

var _imageID: String?
var _kValue: NSNumber?
var _latitude: NSNumber?
var _longitude: NSNumber?

class func dynamoDBTableName() -> String {

return "sendit-mobilehub-1219842108-ImageTable"
}

class func hashKeyAttribute() -> String {

return "_imageID"
}

class func rangeKeyAttribute() -> String {

return "_kValue"
}

override class func jsonKeyPathsByPropertyKey() -> [AnyHashable: Any] {
return [
"_imageID" : "imageID",
"_kValue" : "k-value",
"_latitude" : "latitude",
"_longitude" : "longitude",
]
}
}

这是我用来尝试保存数据的代码:

let dynamoDbObjectMapper = AWSDynamoDBObjectMapper.default()

let imageTable: ImageTable = ImageTable()

imageTable._imageID = AWSIdentityManager.default().identityId
print(imageTable._imageID)
imageTable._kValue = NSNumber(value: 1)
imageTable._latitude = NSNumber(value: 1)
imageTable._longitude = NSNumber(value: 1)

//Save a new item
dynamoDbObjectMapper.save(imageTable, completionHandler: {
(error: Error?) -> Void in

if let error = error {
NSLog("Amazon DynamoDB Save Error: \(error)")
return
}
NSLog("An item was saved.")
})

我已经尝试过的步骤:

  • 我尝试将 @objcMembers 属性添加到类声明上方的模型文件中,但没有任何改变。
  • 我确保在创建 ImageTable 对象后检查该对象中的所有变量是否都已实例化。

谢谢!

最佳答案

DynamoDB 的属性限制:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html#limits-attributes .属性值不能为空字符串或空集(字符串集、数字集或二进制集)。但是,允许空列表和映射。

你能检查表中的四个字段是否都具有有效的非空值吗?我怀疑 AWSIdentityManager.default().identityId 是空的。您必须在您的 iOS 应用程序中使用 AWS Auth SDK 设置身份验证,以便此身份 ID 是有效且非空的字符串。引用:https://docs.aws.amazon.com/aws-mobile/latest/developerguide/add-aws-mobile-user-sign-in.html

关于ios - Dynamo DB 无法保存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51344650/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com