前提・実現したいこと
SwiftでDiaryを応用させたアプリを作っています。
まだ日記の部分を作っている途中なのでRealm活用編
こちらの記事を使って勉強しています。
発生している問題・エラーメッセージ
Realmに保存する要素を書いているコードでエラーが出ます。
Variable used within its own initial value
該当のソースコード
let diary = Diary()ともともと書いていたのですがそれだと
◉Use of unresolved identifier 'Diary'; did you mean 'diary'?
が出てしまいます。
DiaryのファイルはRealmObjectです
DiaryViewController
1 @IBAction func saveButtonPushed(_ sender: UIButton) { 2 3 let realm = try! Realm() 4 print(Realm.Configuration.defaultConfiguration.fileURL!) 5 6 let diary = diary() //ここ! 7 diary.date = date 8 diary.context = contextTextView.text 9 10 11 try! realm.write { 12 realm.add(diary, update: true) 13 } 14 15 self.dismiss(animated: true, completion: nil) 16 17 } 18
DiaryViewController
swift
1import UIKit 2import RealmSwift 3 4class DiaryViewController: UIViewController { 5 6 @IBOutlet var dateLabel: UILabel! 7 8 @IBOutlet var contextTextView: UITextView! 9 10 var date: String! 11 12 override func viewDidLoad() { 13 super.viewDidLoad() 14 15 // Do any additional setup after loading the view. 16 } 17 18 override func didReceiveMemoryWarning() { 19 super.didReceiveMemoryWarning() 20 // Dispose of any resources that can be recreated. 21 } 22 23 override func viewWillAppear(_ animated: Bool) { 24 super.viewWillAppear(animated) 25 26 dateLabel.text = date 27 28 } 29 30 31 @IBAction func saveButtonPushed(_ sender: UIButton) { 32 33 let realm = try! Realm() 34 print(Realm.Configuration.defaultConfiguration.fileURL!) 35 36 let diary = diary() //error 37 diary.date = date 38 diary.context = contextTextView.text 39 40 try! realm.write { 41 realm.add(diary, update: true) 42 } 43 44 self.dismiss(animated: true, completion: nil) 45 46 } 47 48}
Diaryの中身
swift
1import Foundation 2import RealmSwift 3 4class diary: Object { 5 @objc dynamic var date : Date = Date() 6 @objc dynamic var context : String = "" 7 @objc dynamic var photo: NSData? = nil 8 9 override static func primaryKey() -> String? { 10 return "date" 11 } 12}
ViewController
import UIKit import JBDatePicker class ViewController: UIViewController, JBDatePickerViewDelegate { @IBOutlet var datePicker: JBDatePickerView! @IBOutlet var writebutton: UIButton! var date: String! lazy var dateFormatter: DateFormatter = { var formatter = DateFormatter() formatter.timeStyle = .none formatter.dateStyle = .medium return formatter }() override func viewDidLoad() { super.viewDidLoad() } override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() datePicker.updateLayout() } func didSelectDay(_ dayView: JBDatePickerDayView) { //JBDatePickerのDelegateメソッド print("date selected: (dateFormatter.string(from: dayView.date!))") date = dateFormatter.string(from: dayView.date!) } @IBAction func writeButtonPushed(_ sender: UIButton) { self.performSegue(withIdentifier: "toDiary", sender: nil) } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if (segue.identifier == "toDiary") { let diaryView = segue.destination as! DiaryViewController diaryView.date = self.date } } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/31 06:36
2018/12/31 06:38
2018/12/31 06:43