2017-10-16 4 views
1

Ich bin neu in AWS und versuche, Daten in meiner Datenbank zu speichern, indem ich das Beispiel aws mit der Tabelle News verwende.DynamoDB in DB speichern

angeschlossen ich diese Funktion der Hauptstoryboard-Taste:

@IBAction func addButton(_ sender: Any) { 

    let dynamoDbObjectMapper = AWSDynamoDBObjectMapper.default() 

    //Create data object using data models you downloaded from Mobile Hub 
    let newsItem: News = News(); 

    // Use AWSIdentityManager.default().identityId here to get the user identity id. 
    newsItem._userId = "us-east-1:74c8f7ce-244b-4476-963e-0dcb3216f406" 
    newsItem._articleId = "0123" 
    newsItem._title = "Banana" 
    newsItem._author = "Logan" 
    newsItem._content = "Should I stay or should I go now?" 
    newsItem._category = "Food" 


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

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

} 

aber wenn ich den Knopf drücken erhalte ich: mazon DynamoDB Save Error: Error Domain=com.amazonaws.AWSCognitoIdentityErrorDomain Code=0 "(null)" UserInfo={__type=com.amazon.coral.validate#ValidationException, message=Supplied AttributeValue is empty, must contain exactly one of the supported datatypes}

meine Nachrichten Felder sind:

 override class func jsonKeyPathsByPropertyKey() -> [AnyHashable: Any] { 
    return [ 
      "_userId" : "userId", 
      "_articleId" : "articleId", 
      "_author" : "author", 
      "_category" : "category", 
      "_content" : "content", 
      "_title" : "title", 
    ] 
} 
+0

Was die erforderlichen Felder für die zugehörige DynamoDB Tabelle sind? –

Antwort

1

Ich hatte das gleiche Problem, und ich löste das Hinzufügen von @objc in eery Variable von News(), zum Beispiel

class News: AWSDynamoDBObjectModel, AWSDynamoDBModeling { 
    @objc var id: String? 
    @objc var type: String? 
    @objc var cc: String? 
} 

Wenn Sie @objc hinzufügen, die NS-Objekt zu wickeln zwingen, das ist ein Fehler für die aws mobilen sdk ...

+0

Das hat mir wirklich geholfen. Upvoting. Vielen Dank! – Macondo2Seattle