我正在使用 NSDocument 架构的应用程序中对 QTMovie 进行少量编辑(例如添加轨道,如下所示)。编辑后,我想保存到原始文件。但是,我不断收到“文件正忙”错误。我认为这是由于我在处理文件时的一些疏忽,或者我使用 NSDocument 的方式失败。任何提示都会有所帮助!这是(一些)相关代码:
// 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],但该调用似乎并没有使电影变平。我不希望我的文件中有任何外部引用。