iOS 5.1: получение «CoreData: ошибка: (21)» при сохранении NSManagedObjectContext - PullRequest
0 голосов
/ 06 марта 2012

Есть приложение, которое я передал мне, которое показывает PDF-файлы и сохраняет угол поворота и состояние масштабирования при закрытии PDF-файла.

Симптом, с которым я сталкиваюсь, - [NSManagedObjectContext save] Я получаю:

CoreData: ошибка: (21) ошибка ввода-вывода для базы данных на путь к дБ код ошибки SQLite: 21, «невозможно открыть файл базы данных» 2012-03-0609: 58: 40.227 Navtech iCharts [59838: fb03] Операция не может быть завершена.(Ошибка какао 21.)

Это происходит только после сохранения приблизительно 225-250.После этого приложение не может даже открыть .nib файлы, что приводит к:

'NSInternalInconsistencyException', причина: 'Не удалось загрузить NIB в комплекте

Я посмотрел документацию sqlite об ошибке и нашел только заголовок:

#define SQLITE_MISUSE      21   /* Library used incorrectly */

Я даже не уверен, с чего начать диагностировать это.Кто-нибудь знает, что может привести к тому, что это происходит так последовательно, но так редко?


Для контекста, вот код, который выполняет сохранение:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(managedObjectContextDidSave:) name:NSManagedObjectContextDidSaveNotification object:self.context];
NSError *err = nil;
@synchronized(self)
{
    if (![self.context save:&err])
    {
        NSLog(@"%@", [err localizedDescription]);
    }
}
[[NSNotificationCenter defaultCenter] removeObserver:self name:NSManagedObjectContextDidSaveNotification object:self.context];

1 Ответ

1 голос
/ 07 марта 2012

Возможно, вам не хватает файловых дескрипторов. Вы (прямо или косвенно) открываете много файлов?

Взгляните на этот вопрос тоже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...