2017-10-16 9 views
1

私はAWSを初めて使い、ニューステーブルのawsの例を使ってデータベースにデータを保存しようとしています。 DynamoDBデータベースに保存

は私がメインのストーリーボードのボタンにこの機能を接続:

@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.") 
    }) 

} 

が、私はボタンを押したときに私が取得: 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}

私のニュースフィールドは以下のとおりです。

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

関連するDynamoDBのテーブルの必須フィールドは何ですか? –

答えて

1

私が持っていました同じ問題を解決し、News()のeery変数に@objcを追加することを解決しました。例えば

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

あなたはNSオブジェクトにラップする強制@objcを追加した場合、これはAWSモバイルSDKのバグです...

+0

これは本当に私を助けました。アップボーニング。ありがとう! – Macondo2Seattle

関連する問題