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

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

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

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Swift

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

Q&A

1回答

507閲覧

メモアプリの複数のテキストフィールドの自動保存のコードを教えていただきたいです。

ponpon82

総合スコア8

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Swift

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

0グッド

0クリップ

投稿2017/07/22 17:57

###前提・実現したいこと

アプリ開発をしてまだ2週間の初心者です。複数のテキストフィールドのデータ保存のコードを教えていただきたいです。
現在、オリジナルのシンプルなメモアプリを作っているのですが、入力したメモの保存方法がネットで動画を見たり、調べたりしても載っているのですが一向にコードがわかりません。
というのも、よくネットにあるのは、テキスト、ラベル、ボタンがストーリーボードに置かれて、テキストとラベルが連携しており、テキストに文字を入力するとその文字がラベルに表示されて、ボタンを押すと、そのまま保存される、といったようなものが多いです。しかし、私がやりたいのはただ単にテキストに文字を入力したら、それがそのテキストにそのまま自動保存のようになって欲しいのです。
イメージだと何かボタンを押して保存するのではなく、iPhoneに最初から入ってるメモアプリのような保存をしたいです。

どなたか教えていただければ幸いです。もう何日間も保存のやり方でつまずいてます。

また、メモアプリならテーブルビューを使うのが常識でしょうか?
今、TextFieldをいくつか配置してやっているのですが・・・。今後追加や削除をすることを考えるとテーブルビューの方が使い勝手がいいのですかね?

###試したこと
userDefaultsでネットに載っている幾つかのコードを変えて試してみましたが全くできず、CoreDataでやってみようと思いましたがこっちの方が余計わけがわからなかったです。

###補足情報(言語/FW/ツール等のバージョンなど)
MacBookProの最新版です。
swiftは一番新しい3のやつで、xcodeは8.3.3です。

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

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

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

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

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

guest

回答1

0

下記は読んで試されましたか?
Swift 3 User Defaults

UserDefaults はとてもシンプルな仕組みなので、
うまくいかないコードを載せてもらえれば助言できると思います。

また、メモアプリならテーブルビューを使うのが常識でしょうか?
今、TextFieldをいくつか配置してやっているのですが・・・。今後追加や削除をすることを考えるとテーブルビューの方が使い勝手がいいのですかね?

TableView を使うのが楽です。
TextField の状態管理を TableView が各 TableViewCell として管理してくれるので。

UserDefaults に関して追記です。
これは型ごとに保存取得ができるようになっています。(おそらくこの認識が足りていないのかなと思いました)
UserDefaults の Setting Default Values 辺りを参照すると理解できると思います。

以下のコードは Bool を保存しようとしていると思いますが、 String を保存してしまっています。

swift

1defaults.set("Totally True", forKey: "HasAppBeenOpenedBefore")

例えば、以下のように、 Bool を保存したいときは、 Bool を渡せば期待する動作になります。

swfit

1defaults.set(true, forKey: "HasAppBeenOpenedBefore")

自動で保存するには UITextFieldDelegate を活用すれば可能です。
TextField の状態の変化を受け取れるようになるので、実現したい内容に合わせて実装してみましょう。

投稿2017/07/23 14:36

編集2017/07/24 10:14
ykws

総合スコア1236

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

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

ponpon82

2017/07/24 09:51

返信遅れました。 今、そちらの記事を元に作ってみたのですが、もう全然わからないです。 下の「kiduki1〜5」がテキストとなっており、全て自動保存にしたいのですが、どうでしょうか? ぐちゃぐちゃなコードになっており申し訳ないです。 import UIKit class ViewController: UIViewController { @IBOutlet weak var kiduki1: UITextField! @IBOutlet weak var kiduki2: UITextField! @IBOutlet weak var kiduki3: UITextField! @IBOutlet weak var kiduki4: UITextField! @IBOutlet weak var kiduki5: UITextField! let defaults:UserDefaults = UserDefaults.standard defaults.set("Totally True", forKey: "HasAppBeenOpenedBefore") override func viewDidLoad() { super.viewDidLoad() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } override func viewDidAppear(_ animated: Bool) { if let opened:Bool = defaults.bool(forKey: "HasBeenOpenedBefore" ) } }
ykws

2017/07/24 10:15

返信ありがとうございます。回答に追記しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問