Iphone 错误:exportAsynchronouslyWithCompletionHandler多次出现。在美国恢复出口

Iphone 错误:exportAsynchronouslyWithCompletionHandler多次出现。在美国恢复出口,iphone,cocoa-touch,avfoundation,avassetexportsession,Iphone,Cocoa Touch,Avfoundation,Avassetexportsession,嗨,我正在开发一个iphone应用程序,它创建一个AVAssetExportSession对象来保存和创建视频文件。一切正常,(文件已创建并正确保存在documents文件夹中),但尝试恢复保存过程时除外。如果我按下home按钮退出应用程序(或者如果我收到电话或短信),exportAsynchronouslyWithCompletionHandler方法将失败。苹果的文件上说: 如果您试图覆盖现有文件,或在应用程序的沙箱之外写入文件,则导出将失败。如果您需要覆盖现有文件,则必须先将其删除。如果:

嗨,我正在开发一个iphone应用程序,它创建一个AVAssetExportSession对象来保存和创建视频文件。一切正常,(文件已创建并正确保存在documents文件夹中),但尝试恢复保存过程时除外。如果我按下home按钮退出应用程序(或者如果我收到电话或短信),exportAsynchronouslyWithCompletionHandler方法将失败。苹果的文件上说:

如果您试图覆盖现有文件,或在应用程序的沙箱之外写入文件,则导出将失败。如果您需要覆盖现有文件,则必须先将其删除。如果:

有一个来电

您的应用程序在后台,另一个应用程序开始播放

在这些情况下,通常应通知用户导出失败,然后允许用户重新启动导出。“

因此,我尝试取消导出,然后在用户重新打开应用程序时重新启动导出。第二次调用exportAsynchronouslyWithCompletionHandler时出现此错误:

“由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法多次调用exportAsynchronouslyWithCompletionHandler:。”

似乎在[asset CancelExport]exportAsynchronouslyWithCompletionHandler保持活动状态后,是否有可能?我还尝试第二次调用将资源导出到另一个视图控制器,但结果相同。如何在中断后重复保存而不丢失我的资产(它是由另一个视图控制器生成的,没有新的用户交互我无法重建)

这是我的代码:

-(无效)保存{

}

-(无效)索斯潘迪{


}

这有助于我调试的问题
[asset exportAsynchronouslyWithCompletionHandler:^
 {
     switch (asset.status) 
     {
         case AVAssetExportSessionStatusCompleted: 
         {


             [self performSelectorOnMainThread:@selector(lanciosuccess) withObject:nil waitUntilDone:NO];

             break;
         }

         case AVAssetExportSessionStatusFailed:
         {

             [asset cancelExport];
             [self performSelectorOnMainThread:@selector(sospendi) withObject:nil waitUntilDone:NO];

             break;
         }
         case AVAssetExportSessionStatusUnknown: 
         {
              NSLog (@"unknow");



             break;
         }
         case AVAssetExportSessionStatusWaiting: 
         {
              NSLog (@"waiting");



             break;
         }
         case AVAssetExportSessionStatusCancelled: 
         {
              NSLog (@"cancelled");



             break;
         }


     };

 }];
if ([[NSFileManager defaultManager] fileExistsAtPath:[asset.outputURL path]]) 
{
    [[NSFileManager defaultManager] removeItemAtPath:[asset.outputURL path] error:nil];
}

[self save];