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

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

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

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

Xcode

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

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

1回答

1142閲覧

realmに保存したデータをランダムに表示させたいです。

TakenobuShimura

総合スコア4

Realm

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

Xcode

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

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2020/06/28 13:57

realmに保存してあるデータをTextViewにランダムに表示したいです。現在、表示はできる状態ですが、ランダムに表示は出来ていません。arc4randamを用いると、エラーになってしまいます。解決策を教えていただきたいです。

「表示はできている状態のコード」

override func viewDidLoad() {
super.viewDidLoad()

let applicationSupportDir = try! FileManager.default.url(for: .applicationSupportDirectory, in: .userDomainMask, appropriateFor: nil, create: true) let path = applicationSupportDir.appendingPathComponent("question.realm") // Realmのデフォルト設定 var config = Realm.Configuration.defaultConfiguration // Application Supportに変更する config.fileURL = path Realm.Configuration.defaultConfiguration = config let realm = try! Realm() let question = realm.objects(Question.self) for Data in question{

     ShowTextView.text = Data.Create
}

「arc4randamを用いた場合のコード」(Cannot convert value of type 'Question' to expected argument type 'UInt32'というエラーがarc4random_uniform(Data)に出てしまう)

override func viewDidLoad() {
super.viewDidLoad()

let applicationSupportDir = try! FileManager.default.url(for: .applicationSupportDirectory, in: .userDomainMask, appropriateFor: nil, create: true) let path = applicationSupportDir.appendingPathComponent("question.realm") // Realmのデフォルト設定 var config = Realm.Configuration.defaultConfiguration // Application Supportに変更する config.fileURL = path Realm.Configuration.defaultConfiguration = config let realm = try! Realm() let question = realm.objects(Question.self) for Data in question{ arc4random_uniform(Data) ShowTextView.text = Data.Create }

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

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

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

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

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

guest

回答1

0

ベストアンサー

モデルがわからないけど、

swift

1 2let q = question.randomElement() 3

でとれるんじゃないの?

でqのプロパティを取得して表示じゃない?

できないようなら、モデルもしくは、
let question = realm.objects(Question.self)
の後で、dump(question)ってやってコンソールに表示されたものを教えて下さい。


追記

swift

1let realm = try! Realm() 2let question = realm.objects(Question.self) 3ShowTextView.text = question.randomElement().Create

ランダムに取得するだろうから、firstとかでよくて、randomElement()いらないんじゃないかなともおもうけど念の為。

大文字小文字にも意味があるので意識して単語の先頭文字をタイピングしてください。

投稿2020/06/28 20:05

編集2020/06/29 13:36
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

TakenobuShimura

2020/06/29 13:25

tyobigorou様ご回答頂き、ありがとうございます。 以下のように書き直したところ、For-in loop requires 'Question?' to conform to 'Sequence'; did you mean to unwrap optional?というエラーが発生いたしました。 let question = realm.objects(Question.self) let q = question.randomElement()    for Data in q { //ここにエラーが発生 ShowTextView.text = Data.Create また、dump(question)を行うと、コンソールに以下のように表示されました。 CoreText note: Set a breakpoint on CTFontLogSystemFontNameRequest to debug. ▿ Results<Question> <0x7fb56ee33070> ( [0] Question { Create = やった!!!; Answer = ; }, [1] Question { Create = わかった; Answer = ; }, [2] Question { Create = おはよう; Answer = ; }, [3] Question { Create = きょうはあつい; Answer = ; } ) - rlmResults: RLMResults<Question> <0x7fb56ee33070> ( [0] Question { Create = やった!!!; Answer = ; }, [1] Question { Create = わかった; Answer = ; }, [2] Question { Create = おはよう; Answer = ; }, [3] Question { Create = きょうはあつい; Answer = ; } ) #0 初心者なのであまり作業がわかっていないのですが、qのプロパティを取得というのは具体的にどのようなコードになるのでしょうか?お手数ですが、教えていただけると幸いです。よろしくお願い致します。
退会済みユーザー

退会済みユーザー

2020/06/29 13:40

qのプロパティ取得-> q.Create or q.Answer
TakenobuShimura

2020/06/29 13:47

ご返信いただき、ありがとうございます。 ShowTextView.text = question.randomElement().Createを書き加えたらランダムに表示させることができました! この度は本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問