2017-09-24 77 views
0

嗨我試圖做一個簡單的獲取和更新使用AsyncStorage反應本機。AsyncStorage mergeItem - 無法識別的選擇器

我得到使用下面的代碼在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\",\"[email protected]\"]" 
     ) 
    ), 
    3657 
) 

任何想法可能導致選擇器無法識別?我沒有在代碼中的任何地方調用removeItem。

+0

請控制您與'mytrips'合併的數據, –

回答

0

您正在合併項目數組,如我所見。您無法將已存儲的JSON項目與項目數組合並。如react-native docs中所述:

MergeItem:將現有的鍵值與輸入值合併,假設兩個值都是字符串化的JSON。返回一個Promise對象。

請嘗試合併JSON對象與已保存的項目以正常工作。我希望這可以解決您的問題,如果沒有,請讓我知道:)

相關問題