質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

2325閲覧

AWS S3との接続を行いたい

sgyeta

総合スコア23

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/10/28 15:31

編集2022/01/12 10:55

前提・実現したいこと

SwiftにおけるAWSS3との接続処理を行いたいです。

やりたいことは主に2つあります。
・bucket配下にあるjsonファイルを取得してパースしたい
・bucket配下のフォルダ一覧をtableViewで表示したい

現在のbucketの構成としては
bucket

  • sample.json
  • test(空のフォルダ)

となっております。

正直右も左もわからないので、公式のドキュメント通り進めましたが
エラーの解決方法がわからなくて質問させて頂きました。

恐れ入りますが宜しくお願い致します。

発生している問題・エラーメッセージ

2018-10-29 00:17:08.126421+0900 AWSS3Test[6526:2210734] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '`- init` is not a valid initializer. Use `+ defaultS3TransferManager` or `+ S3TransferManagerForKey:` instead.' *** First throw call stack: (0x184d22d8c 0x183edc5ec 0x102c0cb38 0x1024b8648 0x1024b70bc 0x1024b6bb0 0x1024b7ee8 0x18e93ae64 0x18e93aa50 0x18e92bce4 0x18e92ab18 0x18e9b862c 0x18e92e274 0x18e8fb5e0 0x18ef2bb1c 0x18e8fadd0 0x18e8fac6c 0x18e8f9afc 0x18f58f84c 0x18e8f91ec 0x18f374ac8 0x18f4c2bf8 0x18e8f8c0c 0x18e8f85a8 0x18e8f55e0 0x18e8f5330 0x187523470 0x18752bd6c 0x1037dd19c 0x1037e97cc 0x187557878 0x18755751c 0x187557ab8 0x184ccb404 0x184ccac2c 0x184cc879c 0x184be8da8 0x186bcd020 0x18ec05758 0x1024b98e4 0x184679fc0) libc++abi.dylib: terminating with uncaught exception of type NSException

該当のソースコード

Swift

1import UIKit 2import AWSS3 3 4class ViewController: UIViewController { 5 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 9 let transferManager = AWSS3TransferManager() 10 var completionHandler: AWSS3TransferUtilityDownloadCompletionHandlerBlock? 11 let downloadingFileURL = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("sample.json") 12 if let downloadRequest = AWSS3TransferManagerDownloadRequest(){ 13 downloadRequest.bucket = "自分で作成したbucket名を入力してます" 14 downloadRequest.key = "sample.json" 15 downloadRequest.downloadingFileURL = downloadingFileURL 16 17 transferManager.download(downloadRequest).continueWith(executor: AWSExecutor.mainThread(), block: { (task:AWSTask<AnyObject>) -> Any? in 18 if let error = task.error as NSError? { 19 if error.domain == AWSS3TransferManagerErrorDomain, let code = AWSS3TransferManagerErrorType(rawValue: error.code) { 20 switch code { 21 case .cancelled, .paused: 22 break 23 default: 24 print("Error downloading: (downloadRequest.key) Error: (error)") 25 } 26 } else { 27 print("Error downloading: (downloadRequest.key) Error: (error)") 28 } 29 return nil 30 } 31 32 print("Download complete for: (downloadRequest.key)") 33 let downloadOutput = task.result 34 35 return nil 36 }) 37 } 38 } 39 40 override func didReceiveMemoryWarning() { 41 super.didReceiveMemoryWarning() 42 // Dispose of any resources that can be recreated. 43 } 44}

試したこと

こちらを参考に上記の実装を試してみました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

let transferManager = AWSS3TransferManager()

let transferManager = AWSS3TransferManager.default()

ではないでしょうか?
(リンク先の「3. TransferManager クライアントを作成する」項を読んだだけですが。)

投稿2018/11/13 02:54

takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問