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

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

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

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

iOS

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

Swift

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

Q&A

解決済

1回答

1901閲覧

Realmのfilterを用いる際、文字列リテラル内の「(変数)」にシングル・ダブルダブルクォーテーションがあるとエラーになる

unoyu

総合スコア10

Realm

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

iOS

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

Swift

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

0グッド

0クリップ

投稿2021/08/29 16:09

困っていること・実現したいこと

Realm内に「'」や「"」を含む文字列を格納することがあります。
filterを使いそれらを検索しようとする際、以下のような処理を記載しました。

swift

1// 検索に使用する文字列をRealmから取得 2let dogInfo = realm.object(ofType: dogInfo.self, forPrimaryKey: primaryKey) 3 4// 文字列で検索条件を指定 5if let dogList = dogInfo.realmLists.filter("color= '(self.dogColor)' AND ID = '(self.dogID)'").first { 6後続処理・・・ 7}

例えばdogIDの中に'や"が入っていた際、filterでの検索条件の文字列リテラルの中に意図しない'や"が混入することになり、"Unable to parse the format string"というエラーが発生します。
※イメージ
colorが「red」、dogIDが「ab"c」の場合、
検索条件が「"color= 'red' AND ID = 'ab"c'"」となり、"の対応が壊れる。

試したこと

Realmから文字列を取り出した際に、'や"が含まれていた場合は'、"に置換してから検索を行う処理を考えていますが、よりスマートな方法があればご教示いただきたいです。

よろしくお願いします。

補足情報

Xcode Version 12.0
Swift 5.3

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

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

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

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

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

unoyu

2021/08/30 10:51

ありがとうございます! いただいたリンクを元に検索条件を作成したいと思います
guest

回答1

0

自己解決

if let dogList = dogInfo.realmLists.filter("color == %@ && ID == %@", self.dogColor, self.dogID).first { 後続処理・・・ }

質問への追記という形でhoshi-takanoriさんにご教示いただきました。
文字列の埋め込みではなく、NSPredicateの検索表現を用いてことで解決しました。

投稿2021/08/30 10:57

unoyu

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問