Objective c 无法在设备上运行代码

Objective c 无法在设备上运行代码,objective-c,ios,xcode,ios-simulator,Objective C,Ios,Xcode,Ios Simulator,我正在尝试合并视频,代码在模拟器上运行良好。我可以合并视频, 但当我在设备上运行相同的代码时,它会给我这个异常 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'*-[\uu NSArrayM insertObject:atIndex:]:对象不能为零 代码如下: AVMutableComposition *mixComposition = [AVMutableComposition composition]; AVMutableCompositio

我正在尝试合并视频,代码在模拟器上运行良好。我可以合并视频, 但当我在设备上运行相同的代码时,它会给我这个异常

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'*-[\uu NSArrayM insertObject:atIndex:]:对象不能为零

代码如下:

AVMutableComposition *mixComposition = [AVMutableComposition composition]; AVMutableCompositionTrack *compositionTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid]; NSError * error = nil; NSMutableArray * timeRanges = [NSMutableArray arrayWithCapacity:videoClipPaths.count]; NSMutableArray * tracks = [NSMutableArray arrayWithCapacity:videoClipPaths.count]; for (int i=0; i<[videoClipPaths count]; i++) { AVURLAsset *assetClip = [AVURLAsset URLAssetWithURL:[videoClipPaths objectAtIndex:i] options:nil]; AVAssetTrack *clipVideoTrackB = [[assetClip tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];

    [timeRanges addObject:[NSValue valueWithCMTimeRange:CMTimeRangeMake(kCMTimeZero, assetClip.duration)]];
    [tracks addObject:clipVideoTrackB];
}

NSLog(@"HELLO: %@", timeRanges );
[compositionTrack insertTimeRanges:timeRanges ofTracks:tracks atTime:kCMTimeZero error:&error];

AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:mixComposition presetName:AVAssetExportPresetHighestQuality];
// NSParameterAssert(exporter != nil);

NSArray *t; NSString *u;

t = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
u = [t objectAtIndex:0];
NSString *finalPath = [u stringByAppendingPathComponent:@"final.mov"];
NSURL *lastURL = [NSURL fileURLWithPath:finalPath];
exporter.outputFileType = AVFileTypeQuickTimeMovie;
exporter.outputURL = lastURL;
[exporter exportAsynchronouslyWithCompletionHandler:^(void){
    switch (exporter.status) {
        case AVAssetExportSessionStatusFailed:
            NSLog(@"exporting failed");
            [SVProgressHUD dismiss];
            break;
        case AVAssetExportSessionStatusCompleted:
            NSLog(@"exporting completed");
            UISaveVideoAtPathToSavedPhotosAlbum(finalPath, self, nil, NULL);
             [SVProgressHUD dismiss];
            break;
        case AVAssetExportSessionStatusCancelled:
            NSLog(@"export cancelled");
            break;
    }
}];

AVMutableComposition*mixComposition=[AVMutableComposition];AVMutableCompositionTrack*compositionTrack=[mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_无效];n错误*错误=nil;NSMutableArray*时间范围=[NSMutableArray阵列容量:VideoClippath.count];NSMutableArray*跟踪=[NSMutableArray阵列容量:VideoClippath.count];对于(int i=0;i,您的应用程序很可能正在使用某个驻留在Mac上的文件,但您尚未在手机上安装并正确寻址


但是,在任何情况下,都要记录“跟踪”和“时间范围”。

如果使用调试器单步执行此操作,哪一行会导致错误?此代码是否在设备上运行过?如果是,您可能同时删除了资源(电影)并且它们仍然存储在模拟器上。您可能想尝试清理项目和生成文件夹,看看它是否仍在设备上运行。我已经尝试过多次清理生成。飞利浦这行代码导致错误[compositionTrack insertTimeRanges:timeRanges of tracks:tracks atTime:KCMTTimeZero error:&error];“tracks”和“时间范围”确实有值。我做了NSLog并得到了结果。你好:(“”,“”,“”,“”)2012-08-21 10:29:17.791视频测试[382:17903]你好:(“{0/1=0.000},{14400/600=24.000},{0/1=0.000},{12000/600=20.000},{0/1=0.000},{9600/600=16.000},就像我说的那样,”很可能你的应用程序正在使用某个文件,该文件驻留在你的Mac电脑上,但你尚未在手机上安装并正确寻址。“我还说”请包含异常“回溯”调用堆栈。“