首次启动时重置核心数据 [英] Reset core data at first launch

查看:116
本文介绍了首次启动时重置核心数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

For some reasons, I have to update my core data model at every app update.

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

The problem is, at first launch of every update (only at first launch of every update), I would like to reset my model but I don't know how to proceed.

有人曾经遇到过这种问题吗?

Is someone have ever had this kinf of problem ?

提前多多谢谢!

推荐答案

您是否启用了持久存储迁移?只要您只进行简单的模型修改,自动迁移就意味着您不需要重置数据。

Have you enabled Persistent Store migration? As long as you are only making trivial model modifications, automatic migration will mean you don't need to reset the data.

 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:

If there's a different reason to clear your model, then NSUserDefaults is the way to go. You can use a #define to set a version number, and have the persistent store reset when the numbers are different, then when you know you've made a change that requires an empty store you can increment the #define:

#define kNukeTheCache 1000

...

    NSNumber *nukeNumber = [[NSUserDefaults standardUserDefaults] objectForKey:nukemeKey];

    if ((nukeNumber == nil) || (nukeNumber.integerValue < kNukeTheCache)) {
            [self deletePersistentStore:storeURL];
    }
    [[NSUserDefaults standardUserDefaults] setInteger:kNukeTheCache forKey:nukemeKey];
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:totalNuke];
    [[NSUserDefaults standardUserDefaults] synchronize];


- (void)deletePersistentStore:(NSURL *)storeURL
{
    NSError *error = nil;
    [[NSFileManager defaultManager] removeItemAtURL:storeURL error:&error];
    if (error) { // Handle error }
}

这篇关于首次启动时重置核心数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆