2013-08-04 2 views
1

Не наиважнейшая autosaveWithCompletionHandler: всякий раз, когда изменяется документ ( [doc updateChangeCount: UIDocumentChangeDone]) autosaveWithCompletionHandler: периодически вызывается.autosaveWithCompletionHandler: (UIDocument) переопределение вопрос

Но если я переопределяю этот метод, он вызывается только один раз.

Документ был изменен -> Время проходит ... -> Был отменен метод -> Документ был изменен -> Время проходит ... -> Время проходит ... -> Документ был изменено -> Проходит время ... -> Проходит время ...

Я делаю изменение документа, позвонив по телефону [doc updateChangeCount: UIDocumentChangeDone].

(метод наиважнейшая)

- (void) autosaveWithCompletionHandler: (void (^(BOOL success))completionHandler {       

    if ([self hasUnsavedChanges]) { 
     [self saveToURL: self.fileURL forSaveOperation: UIDocumentSaveForOverwriting completionHandler: ^(BOOL success) { 
      if (success) { 
       NSLog(@"%@ has been autosaved", [self description]); 
       completionHandler(YES); 
      } 
      else { 
       NSLog(@"Failed to autosave %@", [self description]); 
       completionHandler(NO); 
      } 
     }]; 
    } 
} // autosaveWithCompletionHandler: 

Благодарим Вас за чтение.

ответ

0

Вы не должны быть переопределены saveWithCompletionHandler: или autosaveWithCompletionHandler:; эти методы вносят изменения в частные свойства, которые помогают системе определить, нуждается ли объект в сохранении, и когда вы переопределяете методы, эти изменения не создаются. Вместо этого вы должны переопределить contentsForType:error:.

+0

Я начал работать над чьим-то кодом, который отменяет это ... - (void) autosaveWithCompletionHandler: (void (^) (успех BOOL)) completeHandler { [super autosaveWithCompletionHandler: completeHandler]; [[NSNotificationCenter defaultCenter] postNotificationName: объект DOCUMENT_AUTOSAVE_OPERATION: self]; } почему это будет проблемой, и как еще я должен обратиться к необходимости уведомления, если бы я не переопределял –

+0

Это, наверное, хорошо, хотя я не уверен, зачем вам это уведомление. – Simon

+0

Спасибо. Причина в том, что он вызывает метод NSLogs, который, в свою очередь, вызывает другой метод для повторного сохранения. И этот метод выдает * другой * (другой вид) уведомления о сохранении. : / –