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

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

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

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

Swift

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

Q&A

解決済

1回答

554閲覧

realmテーブルリレーション クエリ クラス利用時エラー

yamadayeah90

総合スコア6

Realm

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

Swift

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

0グッド

0クリップ

投稿2022/04/26 23:47

編集2022/05/01 01:14

realm にてテーブルリレーションを行い、プライマリーキー(ID)に応じたテーブルデータを作成するという処理を実装したいのですが、現状エラーが起きてしまいます。
長文で申し訳ありませんがよろしくお願いいたします。

下記のリレーションを定義したいです。

user
→moneyflow(userと1対1の関係)
→calender(userと1対多の関係)

※補足 userテーブルのidを指定してその内容に紐づいたデータを登録編集したいです。

現状下記のようなクエリを記述するとエラーが起きてしまいます。

swift

1 class func newOutRegister(getitle:String,getactivereson:String , getmamo:String ,getdate:String) -> Int { 2 let realm = try! Realm() 3 let eventModel = calender() 4 //登録処理 5 do{ 6 try! realm.write{ 7 eventModel.title = getitle 8 eventModel.activereason = getactivereson 9 eventModel.memo = getmamo 10 eventModel.date = getdate 11 realm.add(eventModel) 12 } 13 }catch{ 14 return 1 15 } 16 return 0 17 }

※userのクラスにはエラーは出ないで、同じように宣言している、他クラスはエラーが発生しています。

エラー

Cannot find 'calender' in scope

下記のリレーションの定義が悪いのでしょうか?

swift

1// 2// parsonal.swift 3// myaccount 4 5 6import Foundation 7import RealmSwift 8 9 10//ユーザ情報クラス 11class user: Object { 12 //ユーザID 13 @objc dynamic var id:String = ""; 14 //パスワード 15 @objc dynamic var pass:String = ""; 16 //アプリ内のニックネーム 17 @objc dynamic var name:String = ""; 18 //年齢 19 @objc dynamic var age:String = ""; 20 //性別 21 @objc dynamic var sex:String = ""; 22 //貯金額 23 @objc dynamic var saveingaumont:String = ""; 24 //月収額 25 @objc dynamic var incomeperM:String = ""; 26 //年収 27 @objc dynamic var incomeperY:String = ""; 28 //年収 29 @objc dynamic var staticreason:String = ""; 30 //年収 31 @objc dynamic var incomeetc:Int64 32 = 0; 33 34 //テーブルリレーション設定 35 36 // moneyflowモデルと1対1の関係 37 @objc dynamic var moneyflow: moneyflow? 38 //主キーの設定(必要な場合) 39 override static func primaryKey() -> String? { 40 return "id" // 主キーの名称 41 42 } 43 44 //財務情報(フロー)クラス 45 class moneyflow: Object { 46 //家賃 47 @objc dynamic var home:Int64 = 0; 48 //電気 49 @objc dynamic var elec:Int64 = 0; 50 //水道代 51 @objc dynamic var water:Int64 = 0; 52 //ガス 53 @objc dynamic var gas:Int64 = 0; 54 //通信料(ケータイ代等) 55 @objc dynamic var com:Int64 = 0; 56 //保険料 57 @objc dynamic var insure:Int64 = 0; 58 //サブスク 59 @objc dynamic var subsc:Int64 = 0; 60 } 61 62 //臨時  カレンダークラス 63 class calender: Object { 64 //タイトル 65 @objc dynamic var title:String = "" 66 //支出事由 67 @objc dynamic var outreason:String = "" 68 //収入事由 69 @objc dynamic var inreason:String = "" 70 //メモ 71 @objc dynamic var memo:String = "" 72 //yyyy.mm.dd(年月日) 73 @objc dynamic var date:String = "" 74 //支出 75 @objc dynamic var payout:Int64 = 0 76 //収入 77 @objc dynamic var incometemp:Int64 = 0 78 79 let usermodel = List<user> () // userモデルと1対Nの関係 80 } 81}

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

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

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

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

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

guest

回答1

0

ベストアンサー

回答が付かないので、

Cannot find 'calender' in scope

スコープ(プログラム・コードの見える範囲)の中に calender が見つからない、って言っています。

Swiftにおける基本の概念

スコープ(scope)とは変数の有効範囲を表します。

以下をよく確認してください。

投稿2022/04/27 10:58

Orlofsky

総合スコア16415

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

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

yamadayeah90

2022/04/29 13:09

回答ありがとうございます、ではcalender型の変数を生成するにはcalendrerクラスがuserクラスを継承すればいいということですか?
yamadayeah90

2022/05/01 01:11

再度、コメントになりましてすいません、URLを貼っていただいたサイトはよく確認したのですが、記載していなくて申し訳ありませんが、データベースを定義してる、userのクラスにはエラーは出ないで、同じように宣言している、他クラスはエラーが発生しています。 どのような理由なのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問