0

我想替换核心数据并想删除旧的核心数据。苹果是否允许它删除旧的核心数据。有没有机会拒绝应用程序。

4

2 回答 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 回答