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

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

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

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

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

Swift

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

Q&A

0回答

1495閲覧

RealmSwiftでの質問です。

rubbercorn

総合スコア8

Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

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

Swift

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

0グッド

0クリップ

投稿2016/04/09 07:30

###前提・実現したいこと
ここに質問したいことを詳細に書いてください
RealmSwiftを使って、野球関係のデータベースを作っています。
ViewController(前項)でチーム名と選手名を登録して、ViewController3(後項)で参照・修正(更新)するコードを書きたいと思っています。
ネット等でアドバイスを貰いながら、下記コードまではできたのですが、ViewController3(後項)でUITextFieldをタップしてもRealmSwiftの中身を表示することができないでいます。

###該当のソースコード

以下VeiwController(前項)

import UIKit
import RealmSwift

class ViewController: UIViewController, UITextFieldDelegate {

@IBOutlet weak var textField: UITextField! @IBOutlet weak var textField2: UITextField! @IBOutlet weak var teamLabel: UILabel! @IBOutlet weak var nameLabel: UILabel! var team:String! var name:String! override func viewDidLoad() { super.viewDidLoad() } @IBAction func textFieldDidEndOnExit(sender: UITextField) { textField.delegate = self textField2.delegate = self let realm = try! Realm() let user = User() team = textField.text teamLabel.text = team name = textField2.text nameLabel.text = name user.team = team user.name = name try! realm.write { realm.add(user) } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } //キーボードを閉じる func textFieldShouldReturn(textField: UITextField) -> Bool { textField.resignFirstResponder() return true }

}

以下ViewController3(後項)

import UIKit
import RealmSwift

class ViewController3: UIViewController,UIPickerViewDelegate,UIToolbarDelegate, UITextFieldDelegate{

@IBOutlet weak var textField: UITextField! @IBOutlet weak var textField2: UITextField! @IBOutlet weak var teamLabel: UILabel! @IBOutlet weak var nameLabel: UILabel! var user: Results<User>? var token: NotificationToken? var team:String! var name:String! override func viewDidLoad() { super.viewDidLoad() let realm = try! Realm() let user = realm.objects(User)[0] var team1:String! var name1:String! team1 = user.team teamLabel.text = team1 name1 = user.name nameLabel.text = name1 let pickerView = UIPickerView() pickerView.showsSelectionIndicator = true pickerView.delegate = self textField.inputView = pickerView var toolBar: UIToolbar! toolBar = UIToolbar(frame: CGRectMake(0, self.view.frame.size.height/6, self.view.frame.size.width, 40.0)) toolBar.layer.position = CGPoint(x: self.view.frame.size.width/2, y: self.view.frame.size.height-20.0) toolBar.barStyle = .BlackTranslucent toolBar.tintColor = UIColor.whiteColor() toolBar.backgroundColor = UIColor.blackColor() let toolBarBtn = UIBarButtonItem(title: " 完了 ", style: .Done, target: self, action: #selector(ViewController3.tappedToolBarBtn(_:))) toolBarBtn.tag = 1 toolBar.items = [toolBarBtn] textField.inputAccessoryView = toolBar token = realm.addNotificationBlock { /*[weak self]*/ (notification, realm) -> Void in /*self?.*/pickerView.reloadAllComponents() } } @IBAction func textFieldDidEndOnExit(sender: UITextField) { //変数定義 textField.delegate = self textField2.delegate = self let realm = try! Realm() let user = User() try! realm.write { team = textField.text user.team = team name = textField2.text user.name = name } } //pickerに表示する列数を返す func numberOfComponentsInPickerView(pickerView: UIPickerView!) -> Int { return 1 } //pickerに表示する値を返すデリゲートメソッド func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> Int? { if let user = user { return user.count } return 0 } //pickerが選択された際に呼ばれるデリゲートメソッド func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { if let user = user { return user[row].team } return nil } func tappedToolBarBtn(sender: UIBarButtonItem) { textField.resignFirstResponder() }

}

###試したこと
前項のUITextFieldにチーム名・選手名を入力。
後項のUITextFieldをタップすると、前項で入力した内容が、UIPickerViewで参照できる。
その中から1つを選んで書き換えるモードになって、改行をタップすると更新が完了する。
という内容にしたいと思っていますが、
まだそこまでできあがっていません。
というか、初心者のため、そこまでの知識がありません。

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

###補足情報(言語/FW/ツール等のバージョンなど)
RealmSwift 0.98.6
Xcode 7.3

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

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

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

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

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

YasuhiroMiyake

2016/04/18 23:57

>前項のUITextFieldにチーム名・選手名を入力。 >後項のUITextFieldをタップすると、前項で入力した内容が、UIPickerViewで参照できる。 >その中から1つを選んで書き換えるモードになって、改行をタップすると更新が完了する。 >という内容にしたいと思っていますが、 >まだそこまでできあがっていません。 >というか、初心者のため、そこまでの知識がありません。 書かれている内容が全て出来ないのでしょうか。 それとも一部が出来ないのでしょうか。 順番に確認して何が出来ていないのかを確かめて下さい。 1. 書き込まれた値はRealmに渡す前に存在しているか 2. Realmに渡して正しく登録出来ているか 3. Realmから正しく値が取得出来ているか 4. 取得した値を画面に表示出来ているか 5. 編集した内容をRealmに渡す前に存在しているか 6. Realmに渡した値が反映されているのか 7. 最初の画面でRealmの値を取得しなおしているのか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問