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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

Q&A

解決済

1回答

2023閲覧

【SwiftUI】FireStoreから取得したTimestampのデータが表示されない

Chiaki1111

総合スコア15

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

0グッド

0クリップ

投稿2020/06/01 14:18

編集2020/06/01 14:20

前提・実現したいこと

FireStoreからTimestampのデータを取り出したのですが、
どうしてもDateに変換して画面に表示することができません。

すいませんが、どなたかご教示ください。

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

The supplied formatter <NSDateFormatter: 0x6000011e93e0> returned `nil` when invoked with <FIRTimestamp: seconds=1589727600 nanoseconds=0>. An empty string will be used instead.

該当のソースコード

SwiftUI

1 2//FireStoreからTimestampを含んだデータを取得 3class Observer:ObservableObject { 4 @Published var status = [Entity]() 5 6 init() { 7 let db = Firestore.firestore() 8 db.collection("Theme").addSnapshotListener{(snap, error) in 9 if error != nil { 10 print("(String(describing: error?.localizedDescription))") 11 } 12 for i in snap!.documentChanges { 13 let id = i.document.documentID 14 let startDate = i.document.get("startDate") as? Timestamp ?? Timestamp(date: Date()) 15 let endDate = i.document.get("endDate") as? Timestamp ?? Timestamp(date: Date()) 16 ... 17 18 self.status.append(Entity(id: id, startDate: startDate, endDate: endDate,...)) 19 } 20 } 21 } 22 } 23} 24 25//Viewに日時を表示(しかし、なにも表示されない) 26struct SomeView: View { 27 @ObservedObject var observed = Observer() 28 var dateFormat: DateFormatter { 29 let dformat = DateFormatter() 30 dformat.dateStyle = .medium 31 dformat.timeStyle = .medium 32 dformat.dateFormat = "yyyy/MM/dd HH:mm" 33 dformat.timeZone = TimeZone(identifier: "Asia/Tokyo") 34 return dformat 35 } 36 37 var body: some View { 38 Text("(self.observed.status.startDate.dateValue(), formatter:dateFormat)") 39     Text("(self.observed.status.endDate.dateValue(), formatter:dateFormat)") 40 } 41}

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

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

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

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

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

Chiaki1111

2020/06/02 12:20

>var body: some View { > Text("\(self.observed.status.startDate.dateValue(), formatter:dateFormat)") >     Text("\(self.observed.status.endDate.dateValue(), formatter:dateFormat)") > } このようなコードでTimestamp型である「startDate」「endDate」をdateValueで変換してみたのですがダメでした。何か他のコードが間違っているのでしょうか。
Chiaki1111

2020/06/02 12:38

すいません、.dateValue()を記載していたViewが別のViewでした!(本ページには書いていないView) 普通に正しいViewに.dateValue()入れたらできました。 ご迷惑おかけしました。
guest

回答1

0

自己解決

すいません、.dateValue()を記載していたViewが別のViewでした!(本ページには書いていないView)
普通に正しいViewに.dateValue()入れたらできました。
ご迷惑おかけしました。

投稿2020/06/02 12:39

Chiaki1111

総合スコア15

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問