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

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

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

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

Swift

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

Q&A

解決済

1回答

1220閲覧

TableViewのSubtitleにおいて取得した日付をセルごとにつける

hahum

総合スコア65

Xcode

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

Swift

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

0グッド

0クリップ

投稿2019/01/02 17:29

TableViewのSubtitleにおいて取得した日付をセルごとにつけたいのですが、このままだと全て同じ時刻になってしまいます。理由はsDateに日付が入っていて、それを表示しているからです。
しかし解決策がわからず頓挫しております。解決策を教えていただきたいです。

swift

1func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 2 let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) 3 //日付のフォーマットを指定する 4 let format = DateFormatter() 5 format.dateFormat = DateFormatter.dateFormat(fromTemplate: "yMdkHm", options: 0, locale: Locale(identifier: "ja_JP")) 6 //日付をStringに変換する 7 let sDate = format.string(from: date) 8 9 cell.textLabel!.text = resultArray[indexPath.row] 10 cell.detailTextLabel!.text = sDate 11 12 return cell 13 }

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

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

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

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

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

guest

回答1

0

ベストアンサー

TableViewのサンプルでよくあると思いますが、
配列を使ってデータを用意し、その中身の順番と、
その順番のセルを一致させて、表示するのが通常です。

まずは表示したい日付の配列を用意しないといけないです。

投稿2019/01/02 20:09

hameji001

総合スコア639

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

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

hahum

2019/01/03 03:03 編集

テーブルビューに表示する文字列と同じようにuserdefaultにもう一つ違うキー値で保存してそれを取り出すようにしたのですが、それが最適なのでしょうか。冗長なコードになってしまうような気がして質問しました。初心者なのでコードが長くなりすぎてしまうことが心配です、そして試してみたところindexpathのところでFatal error: Index out of rangeが出てしまいました。
hameji001

2019/01/03 23:32 編集

データの用意の仕方は様々です。量が少なければ、直接 let dateArray = ["2018/1/3", "2018/3/1", "2018/5/1", "2018/8/1", "2018/12/5"] 等、などグローバル定数としてコードに記載します。 それ以上になると、他に用意して読み込む方がいいので、 csv, json, plistファイルなど作り、プロジェクトに入れてそこから読み込んだり、 ネット(Firebase, Firestore等)から落とすようにしたりすると思います。 アプリで入力・変更等考えている場合は、 データを最初にuserdefaultsやrealmのような所に保存し直して、 編集を加えられるようにし、編集後のものをそこに保存します。 なお、userdefaultsだと毎回データ全部 読み込まないといけなくなるので、 検索・抽出・並び替え等できる、 realmなどのデータベースを用いる方がいいと思います。 index out of rangeは指定した数字が範囲を超えているというエラーで、 大抵は最初の番号が0とか-1とかになっているか、 最後の番号が超えているというために起こります。 配列番号と個数の変換の際に、 配列は0から始まるのに対して、 個数は1から始まるので、必然的に、 1個ずらさないといけなくなります。 よく陥りやすいエラーです。print()で番号を先に出力し、 どっちにズレているのか確認する手段を用いるといいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問