現在、iOSアプリの開発を行っており、AWSのDynamoDBからデータを取得する処理を実装しています。
「項目の取得」のサンプルプログラムを実行し、テーブル中のデータを取得ができることは確認しております。
しかし、DynamoDBの項目の取得は多くのViewControllerから行う処理のため、モジュール化して、簡単に読み出せるようにしたいです。
クロージャというものの理解が浅いですが、自分のプログラムで実行できるように適宜サンプルプログラムは変更してあります。(Producerというのは私が定義したクラスです)
test
1func test(id:String)-> Producer{ 2 let dynamoDBObjectMapper = AWSDynamoDBObjectMapper.default() 3 4 tmpProducer = dynamoDBObjectMapper.load(Producer.self, hashKey: id, rangeKey:nil).continueWith(block: { (task:AWSTask<AnyObject>!) -> Producer? in 5 if let error = task.error as NSError? { 6 print("The request failed. Error: (error)") 7 } else if let resultBook = task.result as? Producer { 8 // Do something with task.result. 9 print(resultBook) 10 return resultBook 11 12 } 13 print("return nil") 14 return nil 15 }) 16}
print文の結果↓ <VegetableApp.Producer: 0x1c808c8f0> { "_age" = 30; "_name" = "\U9234\U6728"; "_producerId" = 002; }
このように、関数内でprint文を用いて確認した場合には、項目の取得に成功している事がわかります。
次に別の関数から、test関数を呼び出してみます。
main
1let tmpProducer = queryProducer(id: "002") 2print(tmpProducer)
print文の結果↓ <AWSTask: 0x1c447ba40; completed = NO; cancelled = NO; faulted = NO;>
このように、関数内では取得した項目に対してアクセスすることができるのに、別の関数から呼び出すと、項目にアクセスすることができません。
別の関数(別のViewConroller.swift)などから呼び出しても正しく動作させるにはどうしたら良いでしょうか?
あなたの回答
tips
プレビュー