Использование DynamoDB в iOS после аутентификации - PullRequest
0 голосов
/ 14 мая 2019

Чтобы настроить систему на AWS, где можно создавать и использовать учетные записи пользователей из приложения iOS, я недавно следовал этому руководству .Он использует AWSMobileClient, AWSAuthCore и AWSAuthUI.

Я получил кое-что работающее, где я могу создавать учетные записи и входить и выходить.

Теперь я хотел бы использоватьDynamoDB, чтобы позволить пользователю что-то хранить.Для этого я попытался интегрировать код DynamoDB, который у меня работает, в другое приложение.Но очевидно, что среда двух приложений не совсем одинакова, поэтому она не работает так, как мне бы хотелось.

Вот код данных DynamoDB, который я хочу обработать:

import Foundation
import AWSDynamoDB

@objcMembers
class DynamoDBData: AWSDynamoDBObjectModel, AWSDynamoDBModeling {

    var _message,_timeStamp,_user: String?

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

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

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

    override class func jsonKeyPathsByPropertyKey() -> [AnyHashable: Any] {
        return [
            "_message" : "message",
            "_timeStamp" : "timeStamp",
            "_user" : "user"
        ]
    }
}

А вот код для того, где я пытаюсь что-то сохранить в БД и получить сбой:

@objc func handleTap() {
    print(#function)
    let dynamoDbObjectMapper = AWSDynamoDBObjectMapper.default() // Here the app is crashing.

    // Create data object using the data model:
    let dataBlock = DynamoDBData()
    dataBlock?._message = "message-TEST"
    dataBlock?._timeStamp = "timeStamp-TEST"
    dataBlock?._user = "user-TEST"

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

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

Наконец, это сообщение, которое я получаю при сбое приложения:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', 
reason: 'The service configuration is `nil`. You need to configure `Info.plist` 
or set `defaultServiceConfiguration` before using this method.'

Некоторые указания (даже частичные) о том, как двигаться дальше, были бы очень полезны.

1 Ответ

1 голос
/ 14 мая 2019

Убедитесь, что ваш awsconfiguration.json имеет следующую запись:

    "DynamoDBObjectMapper": {
        "Default": {
            "Region": "AWS_REGION_NAME"
        }
    }

установка собственной AWS_REGION_NAME (например, us-east-1).

...