iOS:检查使用NSTask进行SVN签出是否成功

iOS:检查使用NSTask进行SVN签出是否成功,ios,objective-c,svn,svn-checkout,Ios,Objective C,Svn,Svn Checkout,因此,我目前正在使用以下代码签出SVN目录: NSTask *task = [[NSTask alloc] init]; NSPipe *checkoutPipe = [[NSPipe alloc] init]; [task setLaunchPath:@"/usr/bin/svn"]; [task setArguments:[NSArray arrayWithObjects:@"checkout",SVN_URL_OF_PRJECT_DIR,DEST_DIR,@"--username",SVN

因此,我目前正在使用以下代码签出SVN目录:

NSTask *task = [[NSTask alloc] init];
NSPipe *checkoutPipe = [[NSPipe alloc] init];
[task setLaunchPath:@"/usr/bin/svn"];
[task setArguments:[NSArray arrayWithObjects:@"checkout",SVN_URL_OF_PRJECT_DIR,DEST_DIR,@"--username",SVN_USER,@"--password",SVN_PASSWORD,nil]];
[task setStandardOutput:checkoutPipe];
[task launch];

NSFileHandle *file = [checkoutPipe fileHandleForReading];
NSData *data = [file readDataToEndOfFile];
NSString *checkoutResult = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

NSLog(@"Result: %@",checkoutResult);
这段代码运行良好,但我想通过编程检查签出是否真正成功?如果签出成功,NSLog将打印“
签出的版本XY.
”,但我观察到,即使文件实际上无法放入指定的目录(如果目标路径不正确),它也会打印。它将打印签出的XY修订消息以及目标目录不好的消息


所以我的问题是:什么是测试签出是否完全正常的可靠方法,以及如何确保在签出过程完成后完成检查(我不确定,但它不是异步的?或者它必须在bg线程中才能异步?。

首先等待任务完成。这可以同步完成:

[task waitUntilExit];
或通过注册并等待
NSTASKDIDDTERMINATENTIfication
异步执行

然后获取进程退出状态:

int status = [task terminationStatus];
对于大多数命令,退出状态
0
表示无错误,退出状态
>0
表示有错误。我确信这适用于
svn
命令,但您可以使用svn文档进行检查