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

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

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

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

Q&A

解決済

1回答

287閲覧

Swiftで変数を2つ追加する方法

gnx_vw903

総合スコア74

Swift

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

1グッド

0クリップ

投稿2019/03/03 07:12

前提・実現したいこと

Swiftを使って簡単なToDoアプリを作成しています。
追加機能として、やることに「日付」の情報も追加したいと考えています。

該当のソースコード

TodoTextField に入力された文字はボタンを押すとTodoAdded に追加されるようになっています。
それにUIDatePickerで取得したものをTodoAdded に追加したいと考えております。

ですがどのように追加したら良いかわからない状態ですので、何かアドバイスいただけたら幸いです。

Swift

1import UIKit 2 3//変数の設置 4var TodoAdded = [String]() 5 6class AddController: UIViewController { 7 8 //テキストフィールドの設定 9 @IBOutlet weak var TodoTextField: UITextField! 10 11 //日付用のテキストフィールド 12 @IBOutlet weak var DateTextField: UITextField! 13 var datePicker: UIDatePicker = UIDatePicker() 14 15 //追加ボタンの設定 16 @IBAction func TodoAddButten(_ sender: Any) { 17 //変数に入力内容を入れる 18 TodoAdded.append(TodoTextField.text!) 19 //追加ボタンを押したらフィールドを空にする 20 TodoTextField.text = "" 21 //変数の中身をUDに追加 22 UserDefaults.standard.set( TodoAdded, forKey: "TodoList" ) 23 } 24 25 override func viewDidLoad() { 26 super.viewDidLoad() 27 28 // ピッカー設定 29 datePicker.datePickerMode = UIDatePicker.Mode.dateAndTime 30 datePicker.timeZone = NSTimeZone.local 31 datePicker.locale = Locale.current 32 DateTextField.inputView = datePicker 33 34 // 決定バーの生成 35 let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 35)) 36 let spacelItem = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil) 37 let doneItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(done)) 38 toolbar.setItems([spacelItem, doneItem], animated: true) 39 40 // インプットビュー設定 41 DateTextField.inputView = datePicker 42 DateTextField.inputAccessoryView = toolbar 43 } 44 45 // 決定ボタン押下 46 @objc func done() { 47 DateTextField.endEditing(true) 48 49 // 日付のフォーマット 50 let formatter = DateFormatter() 51 formatter.dateFormat = "yyyy-MM-dd" 52 DateTextField.text = "(formatter.string(from: Date()))" 53 } 54 55 override func didReceiveMemoryWarning() { 56 super.didReceiveMemoryWarning() 57 } 58} 59

補足情報(FW/ツールのバージョンなど)

参考URL
https://www.egao-inc.co.jp/programming/swift_uidatepicker/
https://qiita.com/TD3P/items/8f474358d1dd789557f3

bochan2👍を押しています

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

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

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

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

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

takabosoft

2019/03/04 01:44 編集

「日付」の情報も追加したいとありますが、 日付とタイトルを文字列結合して登録したいのでしょうか? 例) 2019/03/04 teratailの修正依頼に回答する
gnx_vw903

2019/03/04 02:03

コメントありがとうございます。 日付とタイトルを文字列結合を結合させず登録して TableViewの1つのCellに表示したいと考えています。
takabosoft

2019/03/04 02:16 編集

結合しないのでしたら、どうしたいのでしょうか?(どうすればいいと思いますか?)
fuzzball

2019/03/05 07:28 編集

>>TableViewの1つのCellに表示したいと考えています。 突然TableViewの話が出てきましたが、質問に関係ありますか?
gnx_vw903

2019/03/06 02:46

保存した2つのデータをJSONのような形で1つのオブジェクトとして保存できたら Table Viewの1つのCellに表示できるのかなと考えまして。
takabosoft

2019/03/06 04:21 編集

①メモリ内へどういう状態で取っておきたいか(結合しないならタイトル文字列と日付文字列としてペアで持つ?) ②セルにどのように表示したいのか(ここはやっぱり文字列結合になる?それとも1セルに2つのテキストフィールドを載せる?) ③ストレージへどのような手段で保存したいのか(UserDefaulsのまま?) あたりはどうですか?
gnx_vw903

2019/03/06 07:10

①のタイトル文字列と日付文字列としてペアで持てたらと考えています
takabosoft

2019/03/06 07:42

①②③は選択肢ではなく、それぞれが質問です。紛らわしくてすみません。とりあえず①に対して回答を書き込みました。たぶんまだSwiftに慣れていないと思うので、課題を小分けにして少しずつ学習していくと良いと思います。
guest

回答1

0

ベストアンサー

タイトル文字列と日付文字列としてペアで持てたらと考えています

現状、文字列の配列で管理しているものを、
例えば構造体の配列にするという手があります。

swift

1struct TodoItem { 2 var title: String 3 var date: String // 型はDateでも良いですが 4} 5 6var todoItems: [TodoItem] = [] 7todoItems.append(TodoItem(title: "タイトル", date: "1234/56/78"))

構造体でなくともクラスでも良いですが。
(どちらを使うかは用途によって変わってくるので、その辺は調べてみてください)

投稿2019/03/06 07:40

takabosoft

総合スコア8356

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問