2016-11-29 11 views
0

DynamoDBテーブルからデータを取得するのに成功できます。MobileHubを使用してDynamoDBからデータを取得できません

func myRequest(completionHandler: (response: AWSDynamoDBObjectModel?, error: NSError?) -> Void) { 

let objectMapper = AWSDynamoDBObjectMapper.defaultDynamoDBObjectMapper() 

objectMapper.load(myModel.self, 
          hashKey: AWSIdentityManager.defaultIdentityManager().identityId!, 
          rangeKey: nil, 
          completionHandler: {(response: AWSDynamoDBObjectModel?, error: NSError?) -> Void in 
      dispatch_async(dispatch_get_main_queue(), { 
       completionHandler(response: response, error: error) 
      }) 
     }) 


    } 

完了ハンドラの不平応答はnilですが、ログは内容が期待される応答であることを示します。

これは、テーブル 'モデルmyModelにJSON応答をマッピングする際に問題が発生したようです。

myModel10を取得するには、Mobile Hubからサンプルアプリケーションを取得し、既存のフィールドを使用しているものに置き換えます。

答えて

0

問題解決:モデルプロパティに大文字が含まれていました。それらを削除するとプロセスが機能します。

以下、非動作コードを示します。プロジェクトでは、DynamoDBのフィールド名は大文字で始まる必要があります。私はこのルールに従ったプロパティーを作成し、プレフィックスとしてアンダースコアを付けました。

class MyModel: AWSDynamoDBObjectModel, AWSDynamoDBModeling { 

var _UserId: String? 
var _ArticleId: String? 


class func dynamoDBTableName() -> String { 

    return "myTable" 
} 

class func hashKeyAttribute() -> String { 

    return "_UserId" 
} 

class func rangeKeyAttribute() -> String { 

    return "_ArticleId" 
} 

override class func JSONKeyPathsByPropertyKey() -> [NSObject : AnyObject] { 
    return [ 
      "_UserId" : "UserId", 
      "_ArticleId" : "ArticleId", 

    ] 
} 

}

アンこれは作業コードです:

class MyModel: AWSDynamoDBObjectModel, AWSDynamoDBModeling { 

var _userId: String? 
var _articleId: String? 


class func dynamoDBTableName() -> String { 

    return "myTable" 
} 

class func hashKeyAttribute() -> String { 

    return "_userId" 
} 

class func rangeKeyAttribute() -> String { 

    return "_articleId" 
} 

override class func JSONKeyPathsByPropertyKey() -> [NSObject : AnyObject] { 
    return [ 
      "_userId" : "UserId", 
      "_articleId" : "ArticleId", 

    ] 
} 

}

奇妙な、そうではありませんか?

関連する問題