Я только начинаю работать с DynamoDB, и я следую их примерам Swift, и я продолжаю получать ту же ошибку: 'NSInternalInconsistencyException', причина: '_regionId не является свойством TestApp.RegionLocations.'
Мой элемент DynamoDB с ключом раздела regionId выглядит следующим образом:
{
"locations": [
{
"latitude": 40.1234567,
"longitude": 70.1234567,
"name": "Location 1",
"locationId": "LOCATION1-123"
},
{
"latitude": 41.1234567,
"longitude": 71.12345678,
"name": "Location 2",
"locationId": "Location2-123"
}
],
"regionId": "region1"
}
DynamoDBObjectModel, загруженный с AWS. Полностью нетронутым быть мной:
import Foundation
import UIKit
import AWSDynamoDB
class RegionLocations: AWSDynamoDBObjectModel, AWSDynamoDBModeling {
var _regionId: String?
var _locations: [String: String]?
class func dynamoDBTableName() -> String {
return -nameOfTable-
}
class func hashKeyAttribute() -> String {
return "_regionId"
}
override class func jsonKeyPathsByPropertyKey() -> [AnyHashable: Any] {
return [
"_regionId" : "regionId",
"_locations" : "locations",
]
}
}
Функция извлечения, которая вызывается в ViewDidLoad () моего VC. В основном скопировано из примера AWS с измененными именами переменных и rangeKey: nil :
func fetchLocations(){
let dynamoDbObjectMapper = AWSDynamoDBObjectMapper.default()
let locations: RegionLocations = RegionLocations();
locations._regionId = "region1"
dynamoDbObjectMapper.load(
RegionLocations.self,
hashKey: locations._regionId!,
rangeKey: nil,
completionHandler: {
(objectModel: AWSDynamoDBObjectModel?, error: Error?) -> Void in
if let error = error {
print("Amazon DynamoDB Read Error: \(error)")
return
}
print("An item was read.")
})
}
Попробовал (без успеха) с: hashKey: "region1" внутри DynamoDbObjectMapper.load () вместо использования объекта RegionLocations в приведенном выше коде.
Также перезапустил Xcode и очистил проект несколько раз.
Я очень озадачен тем, что я делаю неправильно, так как я в основном следую учебному пособию AWS.