React Native 应用程序在发布模式下崩溃,但在调试模式下运行良好
2019-08-30
2740
我正在开发 iOS 上的 React Native 应用程序。该应用程序在模拟器上运行良好。我尝试在 iPad 上测试该应用程序,它在调试模式下运行良好,但当我在发布模式下在 iPad 上运行该应用程序时,我在单击按钮时收到异常。异常是:
Terminating app due to uncaught exception 'RCTFatalException: Exception '-[__NSCFNumber length]: unrecognized selector sent to instance 0x94fbee52df959691' was thrown while invoking multiSet on target RNCAsyncStorage with params (
(
(
"@TOS:deletedProjects",
1864
)
),
2573
导致此异常的代码是:
let projects = JSON.parse(await AsyncStorage.getItem('@TOS:projects'));
console.log('projects', projects);
let index = projects.findIndex(x => x.p_id === project.p_id);
console.log(projects, index);
projects.splice(index , 1);
console.log('projects', projects);
await AsyncStorage.setItem('@TOS:projects', JSON.stringify(projects));
// await AsyncStorage.setItem('@TOS:deletedProjects', JSON.stringify(project.p_id));
let deletedProjects = await AsyncStorage.getItem('@TOS:deletedProjects')
console.log("********** " + deletedProjects);
if(deletedProjects !== '' && deletedProjects !== null && deletedProjects !== undefined){
console.log('if have deleted projects');
let combined = '"' + deletedProjects + '"' + ',' + '"' + project.p_id + '"';
console.log('combined', combined);
await AsyncStorage.setItem('@TOS:deletedProjects', combined);
}else{
console.log('if no deleted projects');
await AsyncStorage.setItem('@TOS:deletedProjects', project.p_id);
}
console.log('in success');
我无法理解崩溃的原因,因为应用程序在调试模式下运行良好。
1个回答
只是重申 @Waleed 在他的问题评论中提到的内容。要解决此问题,您需要确保只将字符串传递给
AsyncStorage.setItem()
。
我无法解释为什么此错误仅出现在 iOS 的发布版本中。我还测试了 Android 发布版本,当我传递整数时,它运行良好。
Noah Santacruz
2019-09-08