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

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

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

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

1回答

304閲覧

Firebase StorageとFireStoreに保存したuuidStringが異なってるので、一致させたいです。

退会済みユーザー

退会済みユーザー

総合スコア0

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

1クリップ

投稿2018/07/24 10:03

編集2018/07/24 16:40

いつもお世話になっています。
ストーリーボード未使用で開発しています。

行いたい方法

①画像のファイル名にuuidStringを使用し、Cloud storageにアップロードする

②Firestoreのデータ内に上記の画像のパスを入れておく

③呼び出すときはFirestoreのデータ内からパスの情報を取得してアクセスする

できていること

下記コード⓪で、storageで画像を参照できているので、上記の①までできています。

//コード⓪ func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String:Any]) { if let pickedImage = info[UIImagePickerControllerEditedImage] as? UIImage { self.hogehogeImageView.image = pickedImage } let storage = Storage.storage() let storageRef = storage.reference(forURL: "gs://hogehoge.appspot.com") let meta = StorageMetadata() meta.contentType = "image/jpeg" if let data = UIImagePNGRepresentation(info[UIImagePickerControllerOriginalImage] as! UIImage) { let userID = Auth.auth().currentUser?.uid let reference1 = storageRef.child( "huga_image/" + userID! + "/" + NSUUID().uuidString + ".jpg") reference1.putData(data, metadata: meta, completion: { metaData, error in print(metaData) print(error) }) dismiss(animated: true, completion: nil) } picker.dismiss(animated: true, completion: nil) }

実現したいこと

storageで参照できるようになった後に、FireStoreに
"gs://" + bucket + fullPathというStringをデータに保存する処理をし、保存出来ています。

このStringにしたのは、
Firebaseコンソールの(ストレージの場所)のURLと全く同じ文字列にすれば、上記の②と③をクリアできると思ったからです。

ですが、よく見るとそれぞれのuuidStringが異なることに気づきました。
これだと上記の②と③をクリアできないです。

uuidString以外で設定に使える相応しい文字列が自分では思いつかない為、
どういったものだと一致する文字列を実現できるのかお聞きしたいです。

見ていただければ助かります。
宜しくお願いします。

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

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

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

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

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

xenbeat

2018/07/24 15:51

> 上記の①まではできています → Firestoreにパスを保存する以前にアップロード処理の記載がないですが記載漏れですか?その場合は追記ください。もし未実装の場合は公式ドキュメント( https://firebase.google.com/docs/storage/ios/upload-files?hl=ja )を参考にして実装してから追記ください。
退会済みユーザー

退会済みユーザー

2018/07/24 16:17

ご指摘ありがとうございます。追記しました。
退会済みユーザー

退会済みユーザー

2018/07/24 16:19

ただいま本文を修正中です。恐れ入ります
退会済みユーザー

退会済みユーザー

2018/07/24 16:38

maverixz様 質問内容も変わった為修正しました。見ていただけないでしょうか?よろしくお願いします。
guest

回答1

0

ベストアンサー

swift

1let imageName = NSUUID().uuidString

という感じでどこかに宣言しておいて、その値を使ってstorageのアップロード、FireStoreのアップロードをすれば、
複数回呼び出すことがない = 値が変わる問題は起きない
と思うのですがどうでしょうか?

投稿2018/07/25 02:00

taka_jun

総合スコア160

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

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

退会済みユーザー

退会済みユーザー

2018/07/26 02:26

実現したかったuuidを実現できました。 以前の質問に対しても回答していただき、ありがとうございました。 とても勉強になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問