我该如何从iphone中删除coredata

您知道如何在更改实体结构时重置iPhone模拟器上的coredata商店吗?

当我创建的核心数据存储的新版本与我上次在iPhone上运行的版本不同时,是否需要执行类似的过程? 如果是的话,请问怎么样?

谢谢

为方便起见,在您编写通过应用程序删除持久存储的方法之前,您只需通过手机删除应用程序即可。 (将手指放在主屏幕上,直到图标变得晃动,然后单击应用程序上的x。)然后将手机连接到Mac,选择“产品”>“在XCode中运行”,它将在手机上重新安装您的应用程序,但为空数据目录。

当然,对于部署,如果您在部署后更改数据模型(假设您愿意),则需要在不删除应用程序的情况下提供一种方法。 数据迁移是最佳选择,但如果所有其他方法都失败,则删除持久性存储文件。 在这之前最好提示用户批准。 如果他们有重要的数据,他们可以拒绝,也许可以恢复旧版本的应用程序以查看数据并手动迁移,或者他们可以等到您发布修复数据迁移错误的2.0.1版本。

这是我用来重置我的App内容的例程。 它会删除存储存储的任何其他文件。

- (void) resetContent { NSFileManager *localFileManager = [[NSFileManager alloc] init]; NSString * rootDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSURL *rootURL = [NSURL fileURLWithPath:rootDir isDirectory:YES]; NSArray *content = [localFileManager contentsOfDirectoryAtURL:rootURL includingPropertiesForKeys:nil options:NSDirectoryEnumerationSkipsSubdirectoryDescendants error:NULL]; for (NSURL *itemURL in content) { [localFileManager removeItemAtURL:itemURL error:NULL]; } [localFileManager release]; } 

如果您只想删除商店,因为您知道它的文件名,您可以避免枚举文档目录内容:

 - (void) resetContent { NSFileManager *localFileManager = [[NSFileManager alloc] init]; NSString * rootDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSURL *rootURL = [NSURL fileURLWithPath:rootDir isDirectory:YES]; NSURL *storeURL = [rootURL URLByAppendingPathComponent:@"myStore.sqlite"]; [localFileManager removeItemAtURL:storeURL error:NULL]; [localFileManager release]; } 

但请注意,在许多情况下,更改模型时迁移商店更好,而不是删除它。

/Users/username/Library/Application Support/iPhone Simulator/4.3.2 (iOS版本可能不同)中找到您的应用程序并删除.sqlite文件

您可以查看在安装时发送到persistentStoreCoordinator的路径,并删除该文件。 通常我采用的方法是将存储设置为自动迁移,如果失败,我会删除存储并再次尝试创建将使用现在为空的路径的persistentStoreCoordinator。

不要忘记您可能需要重新填充存储在旧数据库中的任何内容。