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

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

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

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

Q&A

1回答

2110閲覧

Realmのlabel表記方法について

asuuuuuuuuu7

総合スコア16

Swift

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

0グッド

0クリップ

投稿2017/06/09 01:09

textfield に入力したものをRealmを利用して遷移先でLabel に表示させたいのですが、方法がわかりません。
下記のようにそのページ内でボタンを押すとLabelに表示するということはできました。
色々試して見ましたが、うまくいかず四苦八苦しています。
今回でRealmを利用してデータベースを利用することが初めてなので、何か方法があればご教授願います。

swift3

1import UIKit 2import RealmSwift 3 4class ViewController: UIViewController { 5 6 //Realmの使用を宣言する文 7 let realm = try! Realm().objects(database.self) 8 9 10 @IBOutlet weak var textField: UITextField! 11 12 @IBAction func button(_ sender: Any) { 13 let data = database() //ボタンを押すとdatabaseを接続する 14 data.name = textField.text! //textFieldに入力された文字をdatabaseに保存 15 16 label.text = data.name //databaseに保存された文字を呼び出してlabelに表示する 17 18 } 19 20 @IBOutlet weak var label: UILabel! 21 22 23 override func viewDidLoad() { 24 super.viewDidLoad() 25 // Do any additional setup after loading the view, typically from a nib. 26 } 27 28 override func didReceiveMemoryWarning() { 29 super.didReceiveMemoryWarning() 30 // Dispose of any resources that can be recreated. 31 } 32 33 34} 35

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

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

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

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

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

guest

回答1

0

@IBAction func button(_ sender: Any) { let data = database() //ボタンを押すとdatabaseを接続する data.name = textField.text! //textFieldに入力された文字をdatabaseに保存 label.text = data.name //databaseに保存された文字を呼び出してlabelに表示する }

おそらくここでRealmへのデータ保存が完了されていないためだと思われます。
下記にプログラム修正案を記載します。
※database.swiftを用意していない場合は新規に作成してください
※画面遷移をどうしているか不明でしたのでその部分は割愛します
※特に指定がなかったので、保存されたテキストの内最新のものをラベル表示する仕様としました


database.swift

import RealmSwift class database: Object{ dynamic var name = "" }

ViewController.swift

import UIKit import RealmSwift class ViewController: UIViewController { //Realmの使用を宣言する文 let realm = try! Realm() @IBOutlet weak var textField: UITextField! @IBOutlet weak var label: UILabel! @IBAction func button(_ sender: Any) { let data = database() data.name = textField.text! try! realm.write { realm.add(data) //textFieldに入力された文字をdatabaseに保存 } } override func viewDidLoad() { super.viewDidLoad() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }

LabelDisplayViewController.swift

import UIKit import RealmSwift class LabelDisplayViewController: UIViewController { //Realmの使用を宣言する文 let realm = try! Realm() @IBOutlet weak var label: UILabel! override func viewDidLoad() { super.viewDidLoad() let data = realm.objects(database.self) label.text = data.last?.name // last?を挟むと最新のレコード取得になります } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }

最後に

Realm Browserという、データベース内のレコードを確認できるツールがありますので、
正常にデータ保存されているかどうかの確認用に導入することをお勧めいたします。

投稿2017/06/21 04:29

Honma

総合スコア25

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問