レルムからどのような種類のデータを取得するための汎用関数を構築しましたが、うまくいくようです。結果<Object>が返されたときにRealmswift汎用関数呼び出しがクラッシュします
func getData<T: Object>(withFilter: String) -> Results<T>? {
if !checkRealm(){return nil}
return realm!.objects(T.self).filter(withFilter)
}
この機能を使用してデータを削除する方法はわかりません。 私の削除機能は以下の通りです:これはエラー、添付怒鳴るになり
func removeData(withFilter: String) {
let dataToDelete: Results<Object>? = getData(withFilter: withFilter)
// *** The above line crashes the app ***
if let dataToDeleteUnwrapped = dataToDelete{
try? realm!.write {
realm!.delete(dataToDeleteUnwrapped)
}
}
}
。 Results<Object>?
はアプリをクラッシュさせますが、Results<MyCustomObject>?
は問題なく動作しますが、データの削除機能は一般的ではありません。
Terminating app due to uncaught exception 'RLMException', reason: 'Object type 'RealmSwiftObject' is not managed by the Realm. If using a custom `objectClasses`/`objectTypes` array in your configuration, add `RealmSwiftObject` to the list of `objectClasses`/`objectTypes`.'
は、私はこの1つを解決するための素敵な短い方法がある確信しているが、私はそれをfiggureすることはできませんので、任意のヘルプは大歓迎です。
これは、デバッガで例外ブレークポイントを設定し、同じエラー – Thodoris
をスローしての種類を確認して使用する方法'Result'の要素です。 'getData'が動作しているかどうかチェックしましたか?実際には正確な型で呼び出すのではないようです。これは、汎用関数を作成する方法ではありません。 'T'は、単一のクラスのインスタンスをフェッチするために' getData'に送る入力引数の型制約です。 –
私が質問に言及したように、{Results?}のように型を定義するとうまくいくので、実際には{removedata}関数を呼び出すときに結果の型を宣言できますか? {removedata}関数を各タイプに1つずつ追加します。 –
Thodoris