UIDocument loadFromContents: не всегда вызывается после изменения документа на другом устройстве

У меня есть собственный подкласс UIDocument и реализованы loadFromContents: и contentsForType:.

Чтобы обнаружить, что документ был изменен на другом устройстве, я добавил делегата к loadFromContents:, как это было предложено в Документация Apple:

- (BOOL)loadFromContents:(id)contents ofType:(NSString *)typeName error:(NSError **)outError {
    // load from disk […]

    if ([_delegate respondsToSelector:@selector(noteDocumentContentsUpdated:)]) {
        [_delegate noteDocumentContentsUpdated:self];
    }
    return YES;
}

Моя проблема заключается в том, что когда я изменяю документ на другом устройстве, я получаю уведомления об изменении состояния документа (edit_disabled, за которым следует normal), но содержимое не перезагружается и loadFromContents: не вызывается.

Содержимое определенно было обновлено на диске. Когда я снова открываю документ через пользовательский интерфейс, я сразу же вижу последние изменения.

В других случаях это работает, и loadFromContents: вызывается автоматически. Не могу понять, почему иногда не работает. Кто-нибудь еще видел эту проблему?


person Mark    schedule 17.02.2014    source источник


Ответы (1)


Вы можете выполнить разрешение версии документа вручную после уведомления и/или перезагрузить документ после того, как он снова вернется в нормальное состояние.

Посмотрите на следующий метод UIDocument, чтобы просто перезагрузить содержимое документа:

- (void)revertToContentsOfURL:(NSURL *)url completionHandler:(void (^)(BOOL success))completionHandler;
person voromax    schedule 20.03.2014