2016-02-25 2 views
0

Я использую CoreData для создания Static NSManagedObject и извлечения из NSManagedObjectContext.Статический NSManagedObject будет храниться в памяти

static YFYMRDepartment *rootOne; 
if (!rootOne) { 
    rootOne = [YFYMRDepartment MR_findFirstByAttribute:@"parent_id" withValue:@(0) inContext:[NSManagedObjectContext MR_defaultContext]]; 
} 

return rootOne; 

Я использую магическую запись, код MR_find на самом деле выполняет некоторые задания выборки из контекста. Однако даже после того, как я удалил файл sql, статический объект все еще существует.

я удалить файл, как это:

NSError *error = nil; 
NSURL *fileURL = pathForStore; 
NSString *schemaURLString = [[fileURL absoluteString] stringByReplacingOccurrencesOfString:@".sqlite" withString:@".sqlite-shm"]; 
NSString *walURLString = [[fileURL absoluteString] stringByReplacingOccurrencesOfString:@".sqlite" withString:@".sqlite-wal"]; 
for (NSURL *romoveString in @[fileURL, [NSURL URLWithString:schemaURLString], [NSURL URLWithString:walURLString]]) { 
    [[NSFileManager defaultManager] removeItemAtURL:romoveString error:&error]; 
    if(error) { 
     // Hanldle error 
    } 
} 

Мой вопрос, почему объект до сих пор там даже я удалить файл хранилища.

+0

Вы не задали вопрос или не указали код для «статического» экземпляра – Wain

+0

Вы думаете, что если вы удалите файл, 'rootOne' станет nil? –

ответ

1

Удаление магазина ничего не делает для объекта. Вам нужно сбросить контекст и свернуть ссылку.

Смежные вопросы