Iphone 错误:exportAsynchronouslyWithCompletionHandler多次出现。在美国恢复出口
嗨,我正在开发一个iphone应用程序,它创建一个AVAssetExportSession对象来保存和创建视频文件。一切正常,(文件已创建并正确保存在documents文件夹中),但尝试恢复保存过程时除外。如果我按下home按钮退出应用程序(或者如果我收到电话或短信),exportAsynchronouslyWithCompletionHandler方法将失败。苹果的文件上说: 如果您试图覆盖现有文件,或在应用程序的沙箱之外写入文件,则导出将失败。如果您需要覆盖现有文件,则必须先将其删除。如果: 有一个来电 您的应用程序在后台,另一个应用程序开始播放 在这些情况下,通常应通知用户导出失败,然后允许用户重新启动导出。“ 因此,我尝试取消导出,然后在用户重新打开应用程序时重新启动导出。第二次调用exportAsynchronouslyWithCompletionHandler时出现此错误: “由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法多次调用exportAsynchronouslyWithCompletionHandler:。” 似乎在[asset CancelExport]exportAsynchronouslyWithCompletionHandler保持活动状态后,是否有可能?我还尝试第二次调用将资源导出到另一个视图控制器,但结果相同。如何在中断后重复保存而不丢失我的资产(它是由另一个视图控制器生成的,没有新的用户交互我无法重建) 这是我的代码: -(无效)保存{ } -(无效)索斯潘迪{Iphone 错误:exportAsynchronouslyWithCompletionHandler多次出现。在美国恢复出口,iphone,cocoa-touch,avfoundation,avassetexportsession,Iphone,Cocoa Touch,Avfoundation,Avassetexportsession,嗨,我正在开发一个iphone应用程序,它创建一个AVAssetExportSession对象来保存和创建视频文件。一切正常,(文件已创建并正确保存在documents文件夹中),但尝试恢复保存过程时除外。如果我按下home按钮退出应用程序(或者如果我收到电话或短信),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];