如何将文档文件保存到iOS中的SQLite数据库以便稍后在程序中查看?

时间:2014-01-09 21:42:33

标签: ios iphone sqlite

我正在编写的代码存在问题。

我正在编写一个iOS程序(我是一个iOS菜鸟),它基本上要求我使用快速查看框架来查看iPhone上的一些文档(* .doc,* .ppt,* .pdf等..)它们存储在数据库中(Core Data - SQLite,没有外部)。我需要以某种方式添加文件,但由于iOS实际上不允许我浏览其文件系统,因此无法在数据库中找到并保存我需要的文档。在我从数据库中获取这些文档之前,哪种方法可以阻止我需要做的其他事情。 (设置列出文件的表视图和文件的详细信息等。)

这是一个类项目所以它不需要是完美的条件,我只需要能够在我呈现项目时浏览一些文档。我可以在编码的同时添加我将要使用的所有文档,当我在演示期间使用该程序时,我不需要能够添加任何新文件。如果我不需要它,我不希望它变得更复杂。就像使用已保存的文件连接到外部数据库一样,使用php缓冲区页面连接到该数据库或类似的东西。我没有必要的服务器系统来执行该php文件。我想在手机内完成此操作。

到目前为止我能够想到的解决方案:

  • 从互联网上抓取一些随机办公室文件并将其保存到数据库中。然后再使用它们。
  • 使用扫描图像而不是实际文档创建一些办公文件的图像扫描和“作弊”。

如果有人能告诉我另一种更简单的方法来处理这件事我真的很感激。请记住,虽然我有Java和C#的编程背景,但我仍然是一个iOS新手,而且几乎没有从表面上看。所以很可能我不知道iOS提供的东西默认情况下,我只是把我的头发拉出来。

我想是的,我希望我没有忘记任何事情。如果您需要更多细节,我将会在这里,我几乎可以立即提供。提前感谢大家的帮助。

1 个答案:

答案 0 :(得分:0)

听起来NSFileManager会帮助你。

如果您将文档放入项目树中,它们将可供您的应用使用。使用NSFileManager将它们复制到应用程序的Documents文件夹中,例如:

- (void)placeBundleFileInDocuments:(NSString *)filename
{
    NSFileManager *fileManager = [NSFileManager defaultManager];

    NSString *bundlePath = [[NSBundle mainBundle] pathForResource:[[filename lastPathComponent] stringByDeletingPathExtension] ofType:[filename pathExtension]];
    NSString *documentsFolderPath = [NSString stringWithFormat:@"%@/", [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]];
    NSString *path = [documentsFolderPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@", filename]];

    if ([fileManager fileExistsAtPath:path])
        return;

    NSError *error = nil;
    [fileManager copyItemAtPath:bundlePath toPath:path error:&error];
    if (error) {
        NSLog(@"Unable to copy file (%@).", error.localizedDescription);
    }
}

然后,您可以使用NSFileManager检索有关文件的详细信息。您可能会发现此方法很有用:

- (NSDictionary *)attributesOfItemAtPath:(NSString *)path error:(NSError **)error

我希望这有帮助!