Iphone 在首次发射时重置核心数据

Iphone 在首次发射时重置核心数据,iphone,ios,core-data,Iphone,Ios,Core Data,出于某些原因,我必须在每次应用程序更新时更新我的核心数据模型 问题是,在每次更新的第一次启动时(仅在每次更新的第一次启动时),我想重置我的模型,但我不知道如何继续 有人有过这样的问题吗 提前多谢 使用NSUserDefaults设置应用程序是否更新。如果更新,则清除应用程序中的核心数据。按照此链接重置核心数据: 更新完成后: [[NSUserDefaults standardUserDefaults]setBool:TRUE forKey:@"isUpdated"] 然后在启动应用程序时检查相

出于某些原因,我必须在每次应用程序更新时更新我的核心数据模型

问题是,在每次更新的第一次启动时(仅在每次更新的第一次启动时),我想重置我的模型,但我不知道如何继续

有人有过这样的问题吗


提前多谢

使用NSUserDefaults设置应用程序是否更新。如果更新,则清除应用程序中的核心数据。按照此链接重置核心数据:

更新完成后:

[[NSUserDefaults standardUserDefaults]setBool:TRUE forKey:@"isUpdated"]

然后在启动应用程序时检查相同的值。

使用NSUserDefaults设置应用程序是否更新。如果更新,则从应用程序中清除核心数据。按照此链接重置核心数据:

更新完成后:

[[NSUserDefaults standardUserDefaults]setBool:TRUE forKey:@"isUpdated"]

然后在启动应用程序时检查相同的值。

是否启用了持久存储迁移?只要您只是做一些微不足道的模型修改,自动迁移就意味着您不需要重置数据

 NSError *error = nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
                                               configuration:nil
                                                         URL:storeURL
                                                     options:@{
                                                        NSMigratePersistentStoresAutomaticallyOption:@YES,
                                                        NSInferMappingModelAutomaticallyOption:@YES,
                                                        NSSQLiteAnalyzeOption:@YES,
                                                            }
                                                       error:&error])
如果有其他原因需要清除模型,那么
NSUserDefaults
是一种方法。您可以使用#define设置版本号,并在版本号不同时重置持久存储,然后当您知道所做的更改需要空存储时,可以增加#define:

#定义kNukeTheCache 1000
...
NSNumber*NukenNumber=[[NSUserDefaults standardUserDefaults]objectForKey:nukemeKey];
if((nukeNumber==nil)| |(nukeNumber.integerValue
您是否启用了持久存储迁移?只要您只是做一些微不足道的模型修改,自动迁移就意味着您不需要重置数据

 NSError *error = nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
                                               configuration:nil
                                                         URL:storeURL
                                                     options:@{
                                                        NSMigratePersistentStoresAutomaticallyOption:@YES,
                                                        NSInferMappingModelAutomaticallyOption:@YES,
                                                        NSSQLiteAnalyzeOption:@YES,
                                                            }
                                                       error:&error])
如果有其他原因需要清除模型,那么
NSUserDefaults
是一种方法。您可以使用#define设置版本号,并在版本号不同时重置持久存储,然后当您知道所做的更改需要空存储时,可以增加#define:

#定义kNukeTheCache 1000
...
NSNumber*NukenNumber=[[NSUserDefaults standardUserDefaults]objectForKey:nukemeKey];
if((nukeNumber==nil)| |(nukeNumber.integerValue
Ok,所以我必须设置一个具有特定值(true)的变量(布尔值),然后在第一次运行后将其更改为(false)?Ok,我明白了。问题是每次应用程序更新时我只需要重置一次核心数据,或者如果我在NSUserDefaults中设置了一个新变量,则该变量将在下一次应用程序更新时已设置(NSUserDefaults不会在应用程序更新时重置)。应用程序更新是什么意思?它正在更新应用程序数据吗?我的意思是,在设备上部署新版本的应用程序。好的,所以我必须设置一个变量(布尔值)和一个特定的值(真),然后在第一次运行后将其更改为(假)?好的,我明白了。问题是每次应用程序更新时我只需要重置一次核心数据,或者如果我在NSUserDefaults中设置了一个新变量,则该变量将在下一次应用程序更新时已设置(NSUserDefaults不会在应用程序更新时重置)。应用程序更新是什么意思?它是在更新应用程序数据吗?不是,我的意思是,在设备上部署新版本的应用程序。我只是来实施你的解决方案,它对我很有用。谢谢!我只是来实施你的解决方案,它对我很有效。谢谢!