1

こんにちは、反応ネイティブで AsyncStorage を使用して簡単な取得と更新を行おうとしています。

次のコードを使用して、 componentDidMount() でデータを取得します。

   AsyncStorage.getItem('mytrips', (err, result) => {
      if(result !== null){
        var data = JSON.parse(result);

        console.log(result);
        this.setState({
          email: data.email,
          firstname: data.firstname,
          lastname: data.lastname,
          phone: data.phone,
          mobile: data.mobile,
          phonecode: data.phonecode,
          DOB: moment(data.DOB).format('DD MMM YYYY'),
        });
      }
    });

ユーザー入力に続いて、mergeItem を使用してストレージの内容を更新したいと考えています。

AsyncStorage.mergeItem('mytrips', JSON.stringify(data));

data は、変更されたすべての値のオブジェクトです。

mergeItem が呼び出されると、次のエラーが発生します。

ExceptionsManager.js:71 Exception '-[__NSArrayI objectForKeyedSubscript:]: unrecognized selector sent to instance 0x600000886400' was thrown while invoking multiMerge on target AsyncLocalStorage with params (
        (
                (
            mytrips,
            "[\"Carl\",\"Carl\",\"11111111\",\"111111111\",\"\",\"1900-01-01\",\"carl@test.com\"]"
        )
    ),
    3657
)

セレクターが認識されない原因は何ですか? コードのどこでも removeItem を呼び出していません。

4

1 に答える 1