NSData writeToFile返回NO,没有任何错误

问题描述 投票:2回答:1

我知道已经有很多主题,但是似乎没有一个问题能启发我的问题。

我应该从服务器上的JSON请求中获取PDF文件。下载任务过程被调用,但是当我尝试将NSData存储到文件时,它不会成功,但不会返回任何错误。

- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location {

    NSData *dataPdf = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://..."]];

    /// Get path directory
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    [[NSFileManager defaultManager] createDirectoryAtPath:documentsDirectory withIntermediateDirectories:YES attributes:nil error:nil];

    NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory, @"msc.pdf"];
    NSLog(@"filePath: %@", filePath); /Users/.../Devices/.../Documents/msc.pdf

    NSError *error = nil;
    BOOL success = [dataPdf writeToFile:filePath options:NSDataWritingAtomic error:&error];
    if (error) {
        NSLog(@"Error:\n%@", error.localizedDescription); // -> Not called
    }
    else {
        NSLog(@"Success? %hhd", success); // -> Returns NO
    }
}

同一段代码可用于其他PDF下载(但此段更为复杂,因为它涉及服务器端的某些脚本而不是直接链接)。

有人知道发生了什么问题吗?

我不知道它是否可以使事情更清晰,但我不确切知道我是否真的应该得到要获取的PDF文件。我所知道的是,至少下载了一些字节(NSURLSession didWriteData返回487),因为NSData不为空/无,所以应该可以在设备上写入这些字节。

objective-c writetofile nserror nsurlsessiondownloadtask
1个回答
0
投票

确保dataPdf不是nil-我只是自己犯了这个错误!

© www.soinside.com 2019 - 2024. All rights reserved.