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

0

如我所见,您正在合并一系列项目。您不能将已存储的 JSON 项目与项目数组合并。如react-native 文档中所述:

MergeItem:将现有键值与输入值合并,假设两个值都是字符串化的 JSON。返回一个 Promise 对象。

请尝试将 JSON 对象与已保存的项目合并以正常工作。我希望这可以解决您的问题,如果没有,请告诉我:)

于 2017-09-24T08:05:46.160 回答