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

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

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

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

Swift

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

Q&A

解決済

1回答

2272閲覧

RealmでのListやLinkingObjectsやResultsの共通化について

nasutaro211

総合スコア21

Realm

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

Swift

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

0グッド

0クリップ

投稿2018/08/25 16:47

iOSアプリ開発のときによくRealmSwiftを使うのですが、List, LinkingObjects, Resultsに対して共通した処理をかけたいときがあります。
例えば次のようなときです。

swift

1 //遷移先にObjectsを送って全てのObjectを表示するというプログラムを書きたいとき 2 var objects:/*ここで型を確定したい*/ = returnObjects()//関数 3 performSegue(withIdentifier: "ShowAllObjects", sender: objects) 4 5 func returnObjects() -> /*ここで型を確定したい*/{ 6 /*手に入れたobjectsがListでもLinkingObjectsでもResultsでも共通してある型にまとめて返したい。*/ 7 }

質問の仕方が下手くそであったらそう教えてくださると嬉しいです。(あまり上手く書けている気はしない)
要するにやりたいことは「List, LinkingObjects, Resultsを共通して扱うために何か一つの型にキャストする」ということです。

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

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

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

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

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

kakajika

2018/08/26 06:40

型情報をなくしたいのならAnyで十分な気がしますが、型パラメータの部分(List<Element>のElementのところ)だけ残して共通の型にしたいとかでしょうか?
nasutaro211

2018/08/26 15:22

そういうことです!現状ひとつずつfor文で配列に入れてからArray<Element>として扱っています。
guest

回答1

0

ベストアンサー

List/LinkingObjects/Resultsは共通で RealmCollection に準拠しています。

Swiftではジェネリックなprotocolの具象型は宣言できないので、型消去されたラッパーの AnyRealmCollection 型で返すようにすればよさそうです。

swift

1func returnObjects() -> AnyRealmCollection<E> { 2 ... 3 // objectsの型はRealmCollectionに準拠しているものであればなんでもOK 4 return AnyRealmCollection(objects) 5}

投稿2018/08/26 16:49

kakajika

総合スコア3131

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

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

nasutaro211

2018/08/26 16:51

ありがとうございます!!! 求めていた物そのものでした!! 本当にありがとうございます!
kakajika

2018/08/26 16:54

早い! それは何よりです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問