2017-10-12 14 views
0

DynamoDBのiOS SDKガイドで例を再現しようとしています。AWSDynamoDBObjectMapper.loadがSwiftのテーブルからデータを取得しない

<AWSDynamoDBKeySchemaElement: 0x600000038080> { 
    attributeName = Id; 
    keyType = 1; 
} 

<AWSDynamoDBAttributeDefinition: 0x600000037ec0> { 
    attributeName = Id; 
    attributeType = 2; 
} 

しかし、私はdynamoDBObjectMapper.loadを使用しようとすると、私は結果にnilの値を取得しています:私は、次の出力に示すようにAWSDynamoDBKeySchemaElementsとAWSDynamoDBAttributeDefinitionsを照会することができています。テーブル名はProductCatalogで、クラス定義がある:

import Foundation 
import AWSDynamoDB 

class ProductCatalog: AWSDynamoDBObjectModel, AWSDynamoDBModeling { 
    var Id: NSNumber? 
    var PageCount: NSNumber? 
    var Title: String? 

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

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

私が使用しているクエリがある:

dynamoDBObjectMapper = AWSDynamoDBObjectMapper.default()  
    dynamoDBObjectMapper.load(ProductCatalog.self, hashKey: 101, rangeKey: nil).continueWith(block: 
    {(task: AWSTask<AnyObject>) -> Any? in 
     if let error = task.error as NSError? { 

      print ("The request failed with \(error)") 
     } else if let resultBook = task.result as? ProductCatalog { 
      print("Title:", resultBook.Title) 
     } 
     return nil 
    }) 

Idが101である行がテーブル内に存在する:

{ 
    "Authors": [ 
    "Author1" 
    ], 
    "Dimensions": "8.5 x 11.0 x 0.5", 
    "Id": 101, 
    "InPublication": true, 
    "ISBN": "111-1111111111", 
    "PageCount": 500, 
    "Price": 2, 
    "ProductCategory": "Book", 
    "Title": "Winterdance" 
} 

私はこれで2日間これに苦しんでいます。どんな助けでも大歓迎です。

答えて

0

これで修正されました。 AWSはSwift 4.0を現在サポートしていません。そこで、Swift 3.2を使用するようにビルド設定を変更したら、うまくいきました。