ios - 未捕获的异常“NSFileHandleOperationException”

标签 ios xcode nsfilehandle

我试图同时使用以下代码从我自己的服务器上下载几个文件:

- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    // create
    [[NSFileManager defaultManager] createFileAtPath:strFilePath contents:nil attributes:nil];
    _file = [NSFileHandle fileHandleForUpdatingAtPath:strFilePath];// read more about file handle
    if (_file)   {
        [_file seekToEndOfFile];
    }
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)receivedata
{
    //write each data received
    if( receivedata != nil){
        if (_file)  {
            [_file seekToEndOfFile];
        }
        [_file writeData:receivedata];
    }
}

- (void)connectionDidFinishLoading:(NSURLConnection*)theConnection {
    //close file after finish getting data;
    [_file closeFile];
}

- (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    //do something when downloading failed
}
- (IBAction)downloadFromServer:(id)sender {

        NSLog(@"File now being downloaded");
    while (i<=3) {

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    NSURL *strFileURL =[NSURL URLWithString:[NSString stringWithFormat:@"SomePath/pic%d.png", i]];

    [request setURL:strFileURL]; 
    NSURLConnection *conection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO];
    [conection start];
    strFilePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:[NSString stringWithFormat:@"pic%d.png", i]];

    }

}

我有3张图片,pic1.png,pic2.png和pic3.png。现在,如果我运行此代码,该应用程序将仅保存一个名为pic3.png的损坏文件并自动崩溃。我需要下载所有三个文件,我要去哪里的任何指针?

最佳答案

很显然,这是行不通的。您开始三个异步操作。每次启动异步操作后,都将文件名存储在一个未知的位置,但可能存储在相同的位置。那么,第一个异步操作完成时将使用什么文件名?提示:您认为不会使用的那个。

关于ios - 未捕获的异常“NSFileHandleOperationException”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26213093/

相关文章:

ios - UICollectionViewCell 以编程方式自动布局

iphone - CLLocationManager 在后台停止

ios - 如何根据 iOS 中的内容更改 UILabel 高度

swift - 可以创建一个出现在 View Controller 角落的 UITableView

ios - 如何从 NSFileHandle * 获取文件 *?

ios - 如何在没有网络连接的情况下持续出现警报?

ios - 如何比较我当前位置的纬度和日志(以 3 英里为半径)? Xcode

ios - 由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因 : '+entityForName: nil is not a legal NSManagedObjectContext

java - NSTask 将输出通过管道传输到控制台而不是 NSFileHandle

swift - 我如何判断 FileHandle 什么时候没有可读的内容?