我想替换核心数据并想删除旧的核心数据。苹果是否允许它删除旧的核心数据。有没有机会拒绝应用程序。
问问题
39 次
2 回答
1
Apple 不会在意,但您的用户可能会。如果您的用户可能会因为丢失某些数据而感到遗憾,那么您应该尽一切努力迁移它,或者在他们升级时提供导出它的选项。
如果您只使用核心数据来缓存下载的值,那么这根本没有问题。事实上,删除旧商店对于防止应用程序在升级时崩溃是必要的,因为它无法从现有商店迁移。执行此操作的最佳位置是当您收到错误时在核心数据设置代码中 - 样板注释会引导您完成此操作。
于 2013-08-26T07:33:22.553 回答
0
这样做没有问题。例如,您可以在 AppDelegate 中检查应用的版本:
- (void)clearCacheIfNeeded;
{
NSString *savedVersion = [[NSUserDefaults standardUserDefaults] objectForKey:@"currentVersion"];
NSString *currentVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
if (![savedVersion isEqualToString:currentVersion]) {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachesDirectory = [paths objectAtIndex:0];
NSArray *contents = [fileManager contentsOfDirectoryAtPath:cachesDirectory error:NULL];
NSEnumerator *e = [contents objectEnumerator];
NSString *filename;
while ((filename = [e nextObject])) {
NSLog(@"file name: %@", filename);
[fileManager removeItemAtPath:[cachesDirectory stringByAppendingPathComponent:filename] error:NULL];
}
[[NSUserDefaults standardUserDefaults] setObject:currentVersion forKey:@"currentVersion"];
}
}
于 2013-08-26T07:34:17.940 回答