2017-05-01 17 views
0

私はSwiftで書かれたiOSアプリケーションを持っています。
DynamoDBテーブル内の特定のアイテムの属性を取得しようとしていますが、代わりにエラーが発生します。iOSのDynamoDBからアイテムを取得できません

AppDelegate.swift:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    // Initialize the Amazon Cognito credentials provider 
    let credentialsProvider = AWSCognitoCredentialsProvider(regionType:.USEast1, identityPoolId:"identityPoolId") 
    let configuration = AWSServiceConfiguration(region:.USEast1, credentialsProvider:credentialsProvider) 
    AWSServiceManager.default().defaultServiceConfiguration = configuration 

    // Override point for customization after application launch. 
    return true 
} 

ViewController.swift:私はテーブルからブックの名前を取得し、ナビゲーションバーに割り当てしようとしているViewController.swift

import AWSDynamoDB 

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     let dynamoDBObjectMapper = AWSDynamoDBObjectMapper.default() 

     dynamoDBObjectMapper.load(Book.self, hashKey: "7", rangeKey: nil).continueWith(executor: AWSExecutor.mainThread(), block: { (task:AWSTask!) -> AnyObject! in 
      if let error = task.error as NSError? { 
       print("Error: \(error)") 
      } else if let tableRow = task.result as? Book { 
       self.navigationItem.title = tableRow.name 
      } 

      return nil 
     }) 
    } 
} 

タイトル。

Book.swift:

import AWSDynamoDB 

class Book: AWSDynamoDBObjectModel, AWSDynamoDBModeling { 

    var id: String? 
    var name: String? 

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

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

私はアプリを実行すると、私はif文でViewController.swiftから来て、コンソールにエラーメッセージが表示されます。

Error: Error Domain=AWSMTLModelErrorDomain Code=1 "-[__NSSetI objectAtIndex:]: unrecognized selector sent to instance 0x618000244f50" UserInfo={AWSMTLModelThrownException=-[__NSSetI objectAtIndex:]: unrecognized selector sent to instance 0x618000244f50, NSLocalizedDescription=-[__NSSetI objectAtIndex:]: unrecognized selector sent to instance 0x618000244f50, NSLocalizedFailureReason=-[__NSSetI objectAtIndex:]: unrecognized selector sent to instance 0x618000244f50} 

私がしようとしましたアプリで項目を追加して、この問題が私のアプリでAWSの設定に関するものかどうかを確認してください。
DBにアイテムを保存する際のAWSガイドに従ったので、問題はどのようにアイテムを受け取ろうとしているのですか?

保存項目= 作品
は=

動作しないアイテムを取得しますが、私はそれを解決する助けてくださいことはできますか?あなたはこのような試みを持ちたいかもしれ

var strings: Set<String>? 
+0

詳細をお知らせください。あなたは正しく認証を設定していますか?また、アイテムはどこから挿入されていますか?彼らはコードで指定されているバックエンドに同じデータ型を持っていますか? –

+0

@RohanDubal質問に「AppDelegate.swift」のAWS設定を追加しました。私はAWSガイドに従って正しく認証を設定し、アイテムをDBに保存できるかどうかを確認し、アイテムを保存することもできます。アイテムは私によってDBに手動で挿入されます。 'Book.swift'のコードで指定されているのと同じデータ型を持っています。 – Ido

答えて

1

はどうやら、それはでした:

import AWSDynamoDB 

class Book: AWSDynamoDBObjectModel, AWSDynamoDBModeling { 

    @objc var id: String? 
    var name: String? 

    @objc class func dynamoDBTableName() -> String { 
     return "Books" 
    } 

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

私はあなたと同じ問題があります。アイテムをDynamoDBに保存するとうまく動作しますが、DynamoDBからアイテムを読み込むときには機能しません。有用なリソースが見つかりませんでした。解決策が見つかった場合はお知らせください。ありがとう。

0

var strings: [String]? 

代わりの文字セットのように:私は、文字列配列のような属性を設定する文字列を設定しているため

関連する問題