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

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

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

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

Q&A

解決済

1回答

725閲覧

配列の要素に、Dateformatterを使った時間の表記の変更ができません!!

animal-cross

総合スコア9

Swift

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

0グッド

0クリップ

投稿2020/04/13 02:11

編集2020/04/13 02:13

開発環境

Swift5
SwiftUI

ご教授頂きたい事

 目覚まし時計のような形でDatePickerから時間を選択し、その時間をformatterを使って24時間表記(例; 16:09)したいと考えております。

 普通にテキストとして表示しようすればそれが可能なのですが、複数表示するために配列を使おうとしておりまして、その配列のString型の変数に時間を入れようとすると次のエラーが起きてしまいます。

 **Extra argument "formatter" in call **

余分だと言われましてもformatterを使いたいのでどうすれば良いかと悩んでおります...

どなたか分かる方、ご教授お願い致します。

該当のコード

Swift

1struct TimeSet: View { 2 @Binding var isShowingSheet: Bool 3 @Binding var time : Date 4 @Binding var items: [Item] 5 6 var body: some View { 7 NavigationView{ 8 VStack{ 9 DatePicker("", selection: $time, displayedComponents: .hourAndMinute) 10 Form{ 11//**ここではformatterが余分だというエラーは出ません。** 12 Text("(self.test, formatter: timeFormatter)") 13 } 14 }.navigationBarTitle("アラームを追加", displayMode: .inline) 15 .navigationBarItems(leading: Button(action: { 16 self.isShowingSheet.toggle() 17 }){ 18 Text("キャンセル") 19 }, trailing: Button(action: { 20 self.isShowingSheet.toggle() 21 self.items += [ 22//配列の因子に追加しようとするここでエラー(Extra argument)が発生します。formatterの文を抜くと通常に動作しますが時間表記がうまく行きません。 23 Item(time: "(self.test, formatter: timeFormatter)") 24 ] 25 }){ 26 Text("保存") 27 }) 28 } 29 } 30}

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

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

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

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

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

guest

回答1

0

ベストアンサー

Text("(self.test, formatter: timeFormatter)") が通るのは SwiftUI’s text views have an optional formatter parameter ってことのようですね。
参考: How to format text inside text views - a free SwiftUI by Example tutorial
参考: appendInterpolation(_:formatter:) - LocalizedStringKey.StringInterpolation | Apple Developer Documentation

一方、Item(time: "(self.test, formatter: timeFormatter)") そのものは SwiftUI ではないので駄目なのでしょう。なぜそこで区別するのかは分かりません。
ちなみに、自分で appendInterpolation(_:formatter:) を定義すればビルドは通りましたが、そこまでする必要があるかは…。
参考: 引数を渡して出力を変化させる - Swift 5 で String Interpolation をカスタマイズする - Qiita

投稿2020/04/13 10:24

hoshi-takanori

総合スコア7893

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問