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

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

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

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

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Swift

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

Q&A

1回答

955閲覧

MongoDB Realmを簡単にテストしたい

Rivermouth

総合スコア17

Realm

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

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Swift

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

0グッド

0クリップ

投稿2021/05/08 13:43

編集2022/01/12 10:55

MongoDB Realmをスマホアプリで使用したいのですが、解決できないエラーが出てしまい、2日間考えましたが解決しそうにありませんので、こちらで質問させていただきます。

###やりたいこと
公式チュートリアルを参考にして、ローカルでMongoDB Realmの呼び出しやデータの追加を簡単にしたいて、実行した際に本当に追加されているか等の確認のためにコンソールかシュミレーター上に表示させたい。

###問題

Property declares an opaque return type, but has no initializer expression from which to infer an underlying type

というエラーと、

Value of type 'LocalOnlyQsTask' has no member 'runLocalOnlyExample'

というエラーが出てしまいます。

イメージ説明

###原因

Property declares an opaque return type, but has no initializer expression from which to infer an underlying type

初期化式をどこにどのように記載すれば良いのか分かりません。
少なくとも、公式チュートリアルにそのような記載はないように思います。
(ただ、見落としている可能性は大いにあります。)

Value of type 'LocalOnlyQsTask' has no member 'runLocalOnlyExample'

LocalOnlyQsTaskクラス内にrunLocalOnlyExampleを入れ込めば良いのですが、公式チュートリアルにはそのようには書いておりませんでした。

###ContentView.swift

Swift

1import SwiftUI 2 3struct ContentView: View { 4 let variable = LocalOnlyQsTask() 5 init() { 6 self.variable.runLocalOnlyExample() 7 } 8 var body: some View { 9 Text("Hello World") 10 } 11}

###LocalOnlyQsTask.swift

Swift

1import Foundation 2import RealmSwift 3import SwiftUI 4 5class LocalOnlyQsTask: Object { 6 @objc dynamic var name: String = "" 7 @objc dynamic var owner: String? 8 @objc dynamic var status: String = "" 9 10 convenience init(name: String) { 11 self.init() 12 self.name = name 13 } 14} 15 16func runLocalOnlyExample() { 17 let localRealm = try! Realm() 18 19 let task = LocalOnlyQsTask(name: "Do landry!") 20 try! localRealm.write { 21 localRealm.add(task) 22 } 23 24 let anotherTask = LocalOnlyQsTask(name: "App design") 25 try! localRealm.write { 26 localRealm.add(anotherTask) 27 } 28 29 let tasks = localRealm.objects(LocalOnlyQsTask.self) 30 print(tasks) 31} 32

丁寧にわかりやすくアドバイス頂けたら幸いです。
宜しくお願いいたします。

###追記

他クラスで関数を呼び出す方法を参考にして、ContentViewでrunLocalOnlyExample()を呼び出そうとしています。

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

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

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

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

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

tomato879241

2021/05/08 14:57 編集

どうしてLocalOnlyQsTaskというClassはnameというpropetyがあるのに、 let variable = LocalOnlyQsTask() ということになるのでしょうか?nameのpropertyを使ってそのClassのinstanceを作りたいんじゃないんですか?
Rivermouth

2021/05/09 04:02

返信ありがとうございます。 追記に追加いたしましたが、とあるサイトを参考にして記載したものです。 Swiftにまだ疎く、わからないことが多いのでそちらのサイトをそのままコピーしました。 どのように修正すればよいのか教えて頂けませんか?
Rivermouth

2021/05/09 04:04

やりたいのはrunLocalOnlyExample()の実行です。 それをどのように行えば良いのか教えていただきたいです。
tomato879241

2021/05/09 04:58

どうしてLocalOnlyQsTaskのインスタンスを作れていないのに、作れていないObjectに対してLocalOnlyQsTaskを実行できるのでしょうか?
Rivermouth

2021/05/09 05:17

分かりません。 LocalOnlyQsTaskのインスタンスは作れていると思うのですが、作れない無いのでしょうか。 小学生でもわかるように分かりやすい説明をお願いいたします。
guest

回答1

0

runLocalOnlyExample()が定義されているスコープを確認してみてください。
LocalOnlyQsTask内ではなくグローバルに定義されていると思います。なので

init() { runLocalOnlyExample() }

で動きます。ということでlet variableは定義する必要ないと思われます。

投稿2021/05/13 16:36

takenm

総合スコア55

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問