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

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

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

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

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

0回答

1068閲覧

swiftのクロージャーの呼び出し方がわからない

退会済みユーザー

退会済みユーザー

総合スコア0

iOS

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

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2017/11/18 00:30

初歩的な質問で大変恐縮なのですが、
web上で参考にしたページにある、functionの呼び出し方が分からず困っております。

https://qiita.com/m_orishi/items/0f8636151c3f98d9271e

【やりたいこと】
1.画像をファイル名を指定して保存
2.ファイル名をリストとして保持
3.forを使って順番に画像を呼び出し

2,3はなんとなくわかるのですが、1が分かりません。
imageIDというものが返されるのでそれがパスになるのかな?と思っているのですが、
そもそもsaveImageFuncの呼び出し方が分からず大変困っております。

どなたかお力を貸してください。

func saveImageFunc(_ imageData: Data, toAlbum albumName: String, completionBlock: @escaping (String?) -> Void, failureBlock: @escaping (Error?) -> Void) { let TempFilePath = "(NSTemporaryDirectory())temp.jpg" var imageID: String? = nil findOrCreatePhotoAlbum(name: albumName) { (album, error) in // 画像データを一時ファイルとして保存 let fileURL = URL(fileURLWithPath: TempFilePath) try? imageData.write(to: fileURL, options: .atomic) if let album = album, FileManager.default.fileExists(atPath: TempFilePath) { PHPhotoLibrary.shared().performChanges({ let assetRequest = PHAssetChangeRequest.creationRequestForAssetFromImage(atFileURL: fileURL)! let albumChangeRequest = PHAssetCollectionChangeRequest(for: album) let placeHolder = assetRequest.placeholderForCreatedAsset albumChangeRequest?.addAssets([placeHolder!] as NSArray) imageID = assetRequest.placeholderForCreatedAsset?.localIdentifier }) { (isSuccess, error) in if isSuccess { // 保存した画像にアクセスする為のimageIDを返却 completionBlock(imageID) } else { failureBlock(error) } _ = try? FileManager.default.removeItem(atPath: TempFilePath) } } else { failureBlock(error) _ = try? FileManager.default.removeItem(atPath: TempFilePath) } } } private func findOrCreatePhotoAlbum(name: String, completion: @escaping (PHAssetCollection?, Error?) -> Void) { var assetCollection: PHAssetCollection? var assetCollectionPlaceholder: PHObjectPlaceholder? let fetchOptions = PHFetchOptions() fetchOptions.predicate = NSPredicate(format: "title = %@", name) let collection = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .any, options: fetchOptions) if collection.firstObject != nil { assetCollection = collection.firstObject completion(assetCollection, nil) } else { PHPhotoLibrary.shared().performChanges({ let createRequest = PHAssetCollectionChangeRequest.creationRequestForAssetCollection(withTitle: name) assetCollectionPlaceholder = createRequest.placeholderForCreatedAssetCollection }) { (isSuccess, error) in if isSuccess { let refetchResult = PHAssetCollection.fetchAssetCollections(withLocalIdentifiers: [assetCollectionPlaceholder!.localIdentifier], options: nil) assetCollection = refetchResult.firstObject completion(assetCollection, nil) } else { completion(nil, error) } } } } //画像の取得 func getImageData(id: String, completionBlock: @escaping (Data?) -> Void) { if let asset = PHAsset.fetchAssets(withLocalIdentifiers: [id], options: nil).firstObject { PHImageManager.default().requestImageData(for: asset, options: nil) { (data, _, _, _) in completionBlock(data) } } }

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問