Ios 保存从";返回的文档;在“中打开”;国际标准化组织

Ios 保存从";返回的文档;在“中打开”;国际标准化组织,ios,Ios,我已经为我的应用程序激活了“打开”功能,以便用户可以在我的应用程序中打开他们的文档。应用程序显示在“打开位置”列表下,当用户按下图标时,“我的应用程序”打开。问题是我似乎不明白如何继续保存文件。这是我从众多问题中学到的: - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url sourceApplication:(NSString *)source annotation:(id)annotation { if ([[DB

我已经为我的应用程序激活了“打开”功能,以便用户可以在我的应用程序中打开他们的文档。应用程序显示在“打开位置”列表下,当用户按下图标时,“我的应用程序”打开。问题是我似乎不明白如何继续保存文件。这是我从众多问题中学到的:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url sourceApplication:(NSString *)source annotation:(id)annotation
{
    if ([[DBChooser defaultChooser] handleOpenURL:url]) {
        return YES;
    }

    if (url != nil && [url isFileURL]) {

        NSError *error = nil;
        NSData *data = [NSData dataWithContentsOfURL:url options:NSDataReadingUncached error:&error];
        if (error) {
            NSLog(@"%@", [error localizedDescription]);
        } else {
            NSLog(@"Data has loaded successfully.");
        }
        return YES;
    }

    return NO;
}
我试图通过以下方式捕获数据,但出现了一个错误。此外,我想知道这个方法是否会对我已经存在的Dropbox导入程序造成任何干扰。。。我读到文件会自动保存在文档/收件箱路径中

作为可以打开的文件类型,我设置了public.content(我相信文档交互控制器可以打开的所有文件)。

使用以下代码:

#define DocumentsDirectory [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES) objectAtIndex:0]

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
     NSLog(@"URL : %@", url);

     NSArray *tempArray = [[NSString stringWithFormat:@"%@",url] componentsSeparatedByString:@"/"];
     NSString *aStrPath = [NSString stringWithFormat:@"%@/%@",DocumentsDirectory, [tempArray lastObject]];

     NSData *aData = [NSData dataWithContentsOfURL:url];
     [aData writeToFile:aStrPath atomically:YES];

     return YES;
}

此代码正在工作

这是我的开放式代码。应该注意的是,这些都是pdf格式的,问题可能在于您正在打开的文件类型。 另外请注意,如果要在本地复制文件,则清除收件箱文件非常重要。否则,您将双重保存数据并耗尽空间

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

    if ([url isFileURL])

  NSData *data = [NSData dataWithContentsOfURL:inboxPath];
    [data writeToFile:scorePath atomically:YES];
    [[NSFileManager defaultManager] removeItemAtURL:inboxPath error:nil];

打开完文档后,文档将保存到应用程序目录中。问题是您必须获取url并执行必要的操作

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    // your code  

    return YES;
}
在Appdelegate.m中使用此委托方法。当您在应用程序中打开任何文档时,将调用此方法

下载iExplorer,使用它您可以查看应用程序中的文档和文件。使用功能打开文件后,应用程序的文档目录将得到更新。

使用以下代码

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{

 if(url !=nil)
{
  NSData *urlData = [NSData dataWithContentsOfURL:url];
  [urlData writeToFile:YourDocumentsDirectoryPath atomically:YES];
 }
  return YES;
  }

您得到的错误是什么?NSLog(@“%@,[error localizedDescription])中的错误;但是日志中显示的实际错误是什么?没有,只有…哦,对了。OpenIn有时似乎不适用于日志记录。也许可以尝试使用断点进行调试,这样您就可以将鼠标悬停在上面,或者打印出错误的值?