2013-09-25 4 views
1

У меня есть приложение, в котором я использую стороннюю библиотеку для сохранения и загрузки данных. Обычно при использовании NSDocument я переопределяю метод - (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError и возвращаю правильные данные, но с этой библиотекой у меня есть доступ только к процедуре сохранения (которая также может создавать несколько файлов, иначе я бы сохранил во временный файл и вернул данные временный файл).Cocoa custom NSDocument saving

Я также попытался следующие:

- (void)saveToURL:(NSURL *)url ofType:(NSString *)typeName forSaveOperation:(NSSaveOperationType)saveOperation completionHandler:(void (^)(NSError *errorOrNil))completionHandler 
{ 
    librarySaveFunction(url.path); 
} 

Который работает, но название документа остается как «MyFile - ред», и если я пытаюсь сохранить снова, я получаю сообщение об ошибке, что данный документ был обновлен другим приложением (я смог разрешить это, установив дату изменения файла, но файл по-прежнему отмечен как «Отредактированный», и он очень хаки).

У кого-нибудь есть лучшее предложение о том, как лучше переопределить рутину экономии?

ответ

2

NSDocument имеет целую огромную иерархию методов, связанных с чтением и записью данных. Какой из них вы должны переопределить, зависит от специфики вашей конкретной ситуации и от того, как они относятся к машинам чтения/записи по умолчанию. Моя реакция на кишок, когда я увидел этот вопрос, заключалась в том, что вы не хотите переопределять методы -save*, вы хотите переопределить метод -write* (возможно, -writeToURL:ofType:forSaveOperation:originalContentsURL:error:), но это действительно сложно сказать, не зная больше о специфике вашего приложения (и эту стороннюю библиотеку, которую вы используете.)

Окончательное обсуждение различных точек переопределения и ситуаций, в которых они подходят, - here.

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