这听起来像你改变了新版本的数据库/内容结构。因此,读/写旧(持久)数据库/内容失败。通常情况下,您必须定义迁移规则,将数据库/内容从旧版本转换为新版本,以便在更新后可以毫无问题地使用它。我不知道Firebase,所以我无法帮助你。
另一种替代方法是在有不兼容的新版本时删除持久数据,并在更新后直接从清理开始。假设已经推出的应用程序的版本为1.0.0,您可以在应用程序流程中尽早做类似的事情:
NSString *lastKnownVersion = [[NSUserDefaults standardUserDefaults] stringForKey:@"LastKnownAppVersion"];
NSString *currentVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]
if (!lastKnownVersion || [currentVersion compare:newVersion options:NSNumericSearch]==NSOrderedAscending) {
if (!lastKnownVersion) {
// first start after update from version 1.0.0 (or lower) to a larger version
// cleanup code here
} else if ([lastKnownVersion compare:@"2.0.0" options:NSNumericSearch]==NSOrderedAscending) {
// first start after update from version 1.0.1 up to 2.0.0 to a larger version
// cleanup code here
} // ... add more versions that need a legacy handling
[[NSUserDefaults standardUserDefaults] setObject:currentVersion forKey:@"LastKnownAppVersion"];
[[NSUserDefaults standardUserDefaults] synchronize];
}