Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift NSInternalInconsistencyException\u变量不是projectName.Classname的属性_Swift_Amazon Web Services_Amazon Dynamodb - Fatal编程技术网

Swift NSInternalInconsistencyException\u变量不是projectName.Classname的属性

Swift NSInternalInconsistencyException\u变量不是projectName.Classname的属性,swift,amazon-web-services,amazon-dynamodb,Swift,Amazon Web Services,Amazon Dynamodb,我正在尝试使用DynamoDB表,并已成功连接到它,但无法读取它。当我尝试时,会出现以下错误: 由于未捕获的异常“NSInternalInconsistencyException”,正在终止应用程序,原因:“\u datePublished不是ProjectName.Article的属性。” 以下是我的文章类别/模型: class Article: AWSDynamoDBObjectModel, AWSDynamoDBModeling { var _articleSource: Strin

我正在尝试使用DynamoDB表,并已成功连接到它,但无法读取它。当我尝试时,会出现以下错误:

由于未捕获的异常“NSInternalInconsistencyException”,正在终止应用程序,原因:“\u datePublished不是ProjectName.Article的属性。”

以下是我的文章类别/模型:

class Article: AWSDynamoDBObjectModel, AWSDynamoDBModeling {

  var _articleSource: String?
  var _articleUrl: String?
  var _datePublished: String?
  var _headline: String?
  var _imageURL: String?
  var _rating: String?
  var _listingId: String?

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

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

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

  override class func jsonKeyPathsByPropertyKey() -> [AnyHashable: Any] {
    return [
      "_articleSource" : "articleSource",
      "_articleUrl" : "articleUrl",
      "_datePublished" : "datePublished",
      "_headline" : "headline",
      "_imageURL" : "imageURL",
      "_rating" : "rating",
      "_listingId" : "listingId",
    ]
  }
}
我在
ViewDidLoad
中调用的函数可以从数据库中读取一篇文章:

 func readArticle() {
let dynamoDbObjectMapper = AWSDynamoDBObjectMapper.default()

// Create data object
let article: Article = Article();
dynamoDbObjectMapper.load(
  Article.self,
  hashKey: "2018-03-17T08:50:30+00:00",
  rangeKey: "https://www.example.com",
  completionHandler: {
    (objectModel: AWSDynamoDBObjectModel?, error: Error?) -> Void in
    if let error = error {
      print("Amazon DynamoDB Read Error: \(error)")
      return
    }
    print("Article:\n \(article)")
})
}


我做错了什么?datePublished存在于数据库的该条目中,并在模型中定义,检查datePublished是数据库中的字符串还是日期类型。如果类型不匹配,则会出现错误。

事实证明AWS SDK还不完全兼容Swift 4。在swift 4中,必须将@objcMembers放在对象模型类定义之前,如:

    @objcMembers class Article: AWSDynamoDBObjectModel, AWSDynamoDBModeling { 

}