これは重複した質問ではありません。シングルトンからレルムにアクセスすると捕捉されないRLMException
私はRealmBackend
シングルトンをDispatchQueueで使用すると、 "RLMException"、理由: '不正なスレッドからアクセスされた領域'エラーメッセージが表示されます。
これは私のクラスである:
class RealmBackend {
static let shared = RealmBackend()
var realm = try? Realm()
}
realm.commitWrite()
にアクセスしているaddObject()
のようなことで機能やrealm.beginWrite()
機能があります。私はレルムオブジェクトがmain
スレッド上に作成されたと仮定していますので、
は、今私は(私はあなたがインスタンス化し、アクセスするために同じスレッドを必要とすることをGitHubの上でどこかで読んDispatchQueue.main.sync
でコールバック(UIRefreshControl
)からaddObject
関数を呼び出しますRealm()
値)。
私が前に述べたように、私はいつもこれを得るRLMException
、誰かが同じ問題に直面していますか?
ディスパッチキューのバックグラウンドスレッドでRealmインスタンスを作成する必要があるのは、ディスパッチキューのバックグラウンドスレッドのRealmインスタンスを作成する必要があるからです。また、明示的な自動解放プールに配置することもお勧めします。 – EpicPandaForce
@EpicPandaForce少しのコード例を回答に投稿できますか?私もそれを試してみましたが(私のシングルトンのプライベート・イニシエートで)、それは私に奇妙なエラーを与えました。 – phipsG
Realmインスタンスをバックグラウンドスレッドで作成するだけでは、メインスレッドでもインスタンスを使用することが期待される場合は、十分ではありません。別々のRealmインスタンスを使用していることを確認する必要があります。スレッドごとに1つ私はこれが私の答えでどのように機能するかを以下に概説しました。 :) – TiM