您好我正在尝试使用反应原生的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));
数据是所有更改值的对象。
调用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。
答案 0 :(得分:0)
我正在合并一系列项目。您不能将已存储的JSON项与项数组合并。如react-native docs中所述:
MergeItem:将现有键值与输入值合并,假设两个值都是字符串化JSON。返回一个Promise对象。
请尝试将JSON对象与已保存的项目合并以使其正常工作。我希望这能解决你的问题,如果没有,请告诉我:)。