Я делаю небольшие изменения для QTMovie в приложении с использованием архитектуры NSDocument (например, добавление трека, как показано ниже). После редактирования я хочу сохранить исходный файл. Тем не менее, я все время получаю ошибку «файл занят». Я предполагаю, что это связано с некоторым недосмотром, которое я сделал при обработке файлов, или с отказом от использования NSDocument. Любые советы были бы полезны! Вот (некоторые из) соответствующего кода:Как правильно сохранить QTMovie после редактирования с помощью QTKit?
// open file that has the track I want to add to my movie
QTMovie* tempMovie = [QTMovie movieWithURL:outputFileURL error:nil];
// Use old API to add the track
AddMovieSelection([movie quickTimeMovie], [tempMovie quickTimeMovie]);
// get the filename from the NSDocument
NSString *filename = [[self fileURL] path];
NSLog(@"writing to filename: %@", filename);
// FLATTEN the movie file so I don't get external references
NSMutableDictionary *attributes = [NSMutableDictionary dictionaryWithCapacity:1];
[attributes setObject:[NSNumber numberWithBool:YES] forKey:QTMovieFlatten];
// attempt to write
NSError *error;
// this is where I get the "file is busy"
if (![movie writeToFile:filename withAttributes:attributes error:&error]) {
NSLog(@"Error: %@", [error localizedDescription]);
NSRunAlertPanel(@"Error", [error localizedDescription], nil, nil, nil);
}
Должен ли я сначала снимать фильм в своем NSDocument? Каков «правильный» способ сделать это? Имейте в виду, что я не обязательно заканчиваю этот документ, я не закрываю его. Я только что закончил эту операцию и хочу, чтобы файл на диске отражал мои изменения. Я хотел бы использовать [movie updateMovieFile], но этот звонок, похоже, не сглаживает фильм. Мне не нужны внешние ссылки в моем файле.