1

ユーザーがいつでも同期を有効または無効にできる場合、同期を処理するための最良の方法は何ですか?

具体的には、インスタンスの割り当てが解除された後に Simperium がクラッシュするという問題が現在発生しています。次のシナリオを検討してください。

  1. データベースを作成し、いくつかのオブジェクトを挿入します
  2. Simperium インスタンスを作成し、サインインして、オフラインで作成されたすべてのオブジェクトを同期します
  3. サインアウト (Simperium インスタンスを解放することを意味します)
  4. さらにいくつかのオブジェクトを作成します

アプリがクラッシュするようになりました:

-[__NSCFString objectsShouldSync]: unrecognized selector sent to instance

__NSCFString は、すでに解放された以前のオブジェクトです

現在の master ブランチを使用しています。

4

2 に答える 2

0

これは一般的な要求であり、「iosupdate」ブランチには役立ついくつかの変更があります。ガイダンスについては、この GitHub の問題を参照してください。要約すると(この質問の著者を引用):

simperium インスタンスを初期化するときに、次のプロパティを設定します。

self.simperium.authenticationOptional = YES;

これにより、キャンセル ボタンが表示されます。

self.simperium.authenticationEnabled = NO;

これにより、認証ダイアログが表示されなくなります。

self.simperium.loginViewControllerClass = [LoginViewController クラス]; これは SPLoginViewController のカスタム サブクラスにドロップされ、cancel: メッセージが上書きされます。そうしないと、ユーザーがダイアログをキャンセルしたというフィードバックが得られません。

ユーザーが記号の「サインイン」ボタンを押すと、設定しました

self.simperium.authenticationEnabled = YES;

これにより、ログインコントローラーが表示されます。

于 2012-08-21T01:37:55.603 に答える