ios - 在 iOS 中保存和查看文件

标签 ios objective-c

我正在从服务器获取 Base64 编码的文件内容。然后我将数据写入文件。之后我检查文件不为空,这意味着数据已成功写入文件。但是当我尝试呈现该文件时,我得到的只是一个空 View 。那么我做错了什么? enter image description here

[f getFile:^(NSString * _Nonnull string) {
                NSString *docsDir;
                NSArray *dirPaths;
                NSData *content = [string dataUsingEncoding:NSUTF8StringEncoding];
                dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
                docsDir = [dirPaths objectAtIndex:0];
                NSString *databasePath = [[NSString alloc] initWithString:[docsDir stringByAppendingPathComponent:@"hill.jpg"]];
               [content writeToFile:databasePath atomically:YES];
                if ([[NSFileManager defaultManager] fileExistsAtPath:databasePath]){
                 NSURL *url = [NSURL fileURLWithPath:databasePath];
                UIDocumentInteractionController *documentInteractionController =[UIDocumentInteractionController interactionControllerWithURL:url];
                 documentInteractionController.delegate = self;
                 [documentInteractionController presentPreviewAnimated:YES];
                }
        } Error:^(NSString * _Nonnull errorMessage) {

      }];

最佳答案

编辑了您的代码片段,尝试一下

[f getFile:^(NSString * _Nonnull string) {
                NSString *docsDir;
                NSArray *dirPaths;
                NSData *content = [[NSData alloc] initWithBase64EncodedString: string options:0];
                dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
                docsDir = [dirPaths objectAtIndex:0];
                NSString *databasePath = [[NSString alloc] initWithString:[docsDir stringByAppendingPathComponent:@"hill.jpg"]];
               [content writeToFile:databasePath atomically:YES];
                if ([[NSFileManager defaultManager] fileExistsAtPath:databasePath]){
                 NSURL *url = [NSURL fileURLWithPath:databasePath];
                UIDocumentInteractionController *documentInteractionController =[UIDocumentInteractionController interactionControllerWithURL:url];
                 documentInteractionController.delegate = self;
                 [documentInteractionController presentPreviewAnimated:YES];
                }
        } Error:^(NSString * _Nonnull errorMessage) {

      }];

关于ios - 在 iOS 中保存和查看文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54651229/

相关文章:

ios - 我需要在不使用 testflight 或 Fabric 的情况下将我的 iPA 文件共享给测试仪

iOS swift Alamofire解析,创建泛型类解析json数据

iphone - UIScrollView 位于页面中间?

objective-c - 一种获取 Cocoa (Swift/Obj-C) 中所有声明的 UTI 的方法...和/或确定应用程序包定义的 UTI?

ios - NSDictionary 没有及时填充

ios - 将 UITableView 添加为 subview

ios - 我的一个 .H 文件突然出现问题

iphone - 检查 NSFetchedResultsController 是否不返回任何对象

objective-c - 使用 UISegmentedControl 通过 NSUserDefaults 保存 mapKit 首选项 - 无法正常工作

ios - 委托(delegate)不解雇 ios