2016-06-13 8 views
0

リアクションネイティブアプリでシングルサインオン機能を追加しようとしています。私はデータの永続性のために領域を使用しています。サインインプロセスで正常に動作し、ユーザーが最初のログイン時にデータを保存します。しかし、ナビゲータの右上にあるログアウトボタンをクリックすると、ローカルストレージからユーザオブジェクトを削除したい。NavigatorIOSの右クリックアクションでレルムオブジェクトを削除できません

home screen

私はonRightButtonPressイベントでレルムストレージからユーザーオブジェクトを削除しようとすると、私はInvalid arguments例外を取得しています。 NavigatorIOSのこのイベントのコードは次のとおりです。

<NavigatorIOS 
    barTintColor="#000000" 
    tintColor="#fff" 
    titleTextColor="#fff" 
    ref={(ref) => this._navigator = ref} 
    style={{flex: 1,backgroundColor: '#fff'}} 
    initialRoute={{ 
     title: 'NOOZOO', 
     component: Home, 
     leftButtonIcon: require('../images/menu.png'), 
     onLeftButtonPress:() => { this._drawer.open() }, 
     rightButtonTitle: 'Logout', 
     onRightButtonPress:() => {alert('Logout'); 
            console.log({name: global.__user.name,token: global.__user.token}); 
            var users = realm.objects('User'); 
            console.log(users.length); 
            console.log(users[0].isValid()); 
            realm.write(()=>{ 
            realm.delete('User', users[0]); 
            }); 
            console.log('deleted'); 
            this._navigate({'title':'Company','routeName':'Home','active':false,'iconUrl': require('../images/check.png'),'newView':false}); 

            console.log(users); 
            }, 
    }}/> 

私は、レルムがアクセス可能であるかどうかを確認し、画像を以下のように細かい思われる、ストレージ内のいくつかのオブジェクトを持っているために、コンソールにいくつかの値を印刷しています。

Console output when Logout is pressed

私はレルムメソッド呼び出しか何かに何かをやっているかどうかは知りません。私は領域のためのドキュメントを見て、github上でそれについての問題を読むが、この問題を解決することができませんでした。どんな助けもありがとう。

答えて

1

call do deleteは、最初の引数としてオブジェクト型を使用しません。これにその行を変更してみてください:

realm.delete(users[0]); 
+0

このソリューションは働いていたが、私はレルムが自動的に収集クラスについては、それを伝えることなく、オブジェクトに基づいて推測する方法を疑問に思って。 –

+0

オブジェクトはRealmから作成されているため、オブジェクトの種類を確認して適切に削除することができます。あなたの答えから – Ari

+0

、私たちは明示的にオブジェクトの種類は 'ユーザー'とは言及していません。 –

関連する問題