как удалить coredata с айфона

Вы знаете, как можно сбросить хранилище основных данных на симуляторе iPhone, если вы изменили структуру своего объекта?

Нужно ли мне выполнять аналогичный процесс, когда я создал новую версию основного хранилища данных, которая отличается от той, которую я в последний раз запускал на своем iPhone? Если да, то как, пожалуйста?

Спасибо


person Jazzmine    schedule 09.09.2011    source источник


Ответы (4)


Просто для удобства, пока вы не запрограммируете способ удаления постоянного хранилища через свое приложение, вы можете просто удалить приложение с телефона. (Держите палец на главном экране, пока значки не станут волнистыми, затем нажмите x в своем приложении.) Затем, когда ваш телефон подключен к вашему Mac, выберите «Продукт»> «Выполнить в XCode», и он переустановит ваше приложение на телефоне, но с пустым каталоги данных.

Для развертывания, конечно, вам нужно придумать способ сделать это без удаления приложения, если вы когда-нибудь будете менять свою модель данных после развертывания (предположим, что вы это сделаете). Миграция данных — лучший вариант, но если ничего не помогает, удалите файл постоянного хранилища. Было бы предпочтительнее запрашивать одобрение пользователя, прежде чем делать это. Если у них есть важные данные, они могут отказаться и, возможно, вернуть старую версию вашего приложения, чтобы просмотреть данные и перенести их вручную, или они могут подождать, пока вы не выпустите версию 2.0.1, которая исправит вашу ошибку переноса данных.

person morningstar    schedule 10.09.2011
comment
Спасибо утренняя звезда! Я попробовал ваш первый вариант на данный момент. Мне нравилось, когда меня предупреждали, что мое хранилище данных тоже будет удалено. Просто хотел, хотел. - person Jazzmine; 11.09.2011

Вот процедура, которую я использую для сброса содержимого моего приложения. Он стирает хранилище и любой другой сохраненный файл.

- (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];
}

Но обратите внимание, что во многих случаях при смене модели лучше перенести магазин, чем удалять его.

person Jean-Denis Muys    schedule 09.09.2011
comment
Но не забудьте также удалить файлы журнала myStore.sqlite-shm и myStore.sqlite-wal (созданные в iOS 7 и более поздних версиях для режима ведения журнала), потому что они занимают большую часть места и после удаления Store становятся бесполезными. - person Ammar Mujeeb; 17.06.2016

найдите свое приложение в /Users/username/Library/Application Support/iPhone Simulator/4.3.2 (версия iOS может отличаться) и удалите файл .sqlite

person Community    schedule 09.09.2011
comment
Эй, iPortable, похоже, вы указали путь к симулятору. Я хочу удалить хранилище данных на моем телефоне. Спасибо хоть. - person Jazzmine; 10.09.2011
comment
ой извините неправильно понял вопрос. В первой части вы просили симулятор, поэтому я подумал, что вы имеете в виду базу данных симулятора. Извиняюсь. - person ; 10.09.2011

Вы можете посмотреть путь, который отправляется в persistenceStoreCoordinator при установке, и удалить этот файл. Обычно подход, который я использую, заключается в том, что я настраиваю хранилище для автоматической миграции, и если это не удается, я удаляю хранилище и еще раз пытаюсь создать постоянныйStoreCoordinator, который будет использовать теперь пустой путь.

Не забывайте, что вам может понадобиться повторно заполнить что-либо, хранящееся в старой базе данных.

person Kendall Helmstetter Gelner    schedule 09.09.2011
comment
Привет, Кендалл: Можете ли вы сказать мне: 1. как настроить магазин для автоматической миграции 2. как я могу удалить магазин с моего телефона, кроме того, как chown предлагает выше? - person Jazzmine; 10.09.2011
comment
Просто используйте NSFileManager, чтобы удалить файл. Вы можете поискать в Google множество примеров того, как заставить магазин выполнять автоматическую миграцию. - person Kendall Helmstetter Gelner; 10.09.2011