我正在使用 AsyncStorage
存储一些 Firebase 用户数据。
AsyncStorage.setItem('firebaseUser', JSON.stringify(data))
当我尝试检索数据时,React Native 出现以下错误
AsyncStorage.getItem('firebaseUser')
JSON value '' of type NSNull cannot be converted to NSString +[RCTConvert NSString:] + 226 RCTConvert.m:56
Firebase 似乎返回了一些
null
数据( displayName
, photoUrl
等)不确定是否相关。版本:
"react-native": "^0.31.0",
"firebase": "^3.3.0",
更新:
我实际上将其缩小到 Firebase 模块正在使用
AsyncStorage
存储自己的数据。发生这种情况时,我会得到 JSON <null>
错误。当我清除 AsyncStorage
,它再次工作。 Firebase 数据对象如下所示:"{
"uid": "XwsK2",
"displayName": null,
"photoURL": null,
"email": "test@test.com",
"emailVerified": false,
"isAnonymous": false,
"providerData": [
{
"uid": "test@test.com",
"displayName": null,
"photoURL": null,
"email": "test@test.com",
"providerId": "password"
}
],
"apiKey": "xLxzuyPlUqA88kEfy",
"appName": "[DEFAULT]",
"authDomain": "abc.firebaseapp.com",
"stsTokenManager": {
"apiKey": "xLxzuyPlUqA88kEfy",
"refreshToken": "AJiUa4Y7b",
"accessToken": "eyJhbGciOiJSUzjQzYzU3Nzk5NGVmNGNiy_DlQ8xQO7kq3YXxgntE9Q8YJA",
"expirationTime": 1472098951672
},
"redirectEventId": null
}"
最佳答案
AsyncStorage 希望您给它一个 string
调用setItem
时,但你给它一个对象。在保存之前尝试对 firebase 数据进行字符串化:
AsyncStorage.setItem('firebaseUser', JSON.stringify(data));
当你读回它时解析它:
AsyncStorage.getItem('firebaseUser').then(data => data ? JSON.parse(data) : null);
关于firebase - 无法将 NSNull 类型的 native AsyncStorage firebase JSON 值 '<null>' 转换为 NSString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39059800/