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

Posted

技术标签:

【中文标题】如何将文档文件保存到 iOS 中的 SQLite 数据库,以便稍后在程序中查看它们?【英文标题】:How can I save document files to the SQLite Database in iOS to view them later in the program? 【发布时间】:2014-01-09 21:42:33 【问题描述】:

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

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

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

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

从互联网上随机获取一些办公文件并将它们保存到数据库中。以后再用。 创建一些办公文件的图像扫描,并通过使用扫描的图像而不是实际文档来“作弊”。

如果有人能告诉我另一种更简单的方法来处理这个问题,我将不胜感激。请记住,虽然我有 Java 和 C# 的编程背景,但我仍然是一名 iOS 菜鸟,只是勉强从零开始。所以很可能我不知道iOS默认提供的东西,我只是白费力气。

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

【问题讨论】:

【参考方案1】:

听起来 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

我希望这会有所帮助!

【讨论】:

非常感谢您的帮助,我会尽快尝试。它看起来真的可以解决我的问题。

以上是关于如何将文档文件保存到 iOS 中的 SQLite 数据库,以便稍后在程序中查看它们?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过iphone中的sqlite获取路径来显示文档目录中保存的图像

如何在 iOS 中以编程方式将 sqlite 文件保存在本地文件夹或 nsbundle 中?

如何将 SQLite 文件从 Documents 目录保存回目标 C 中的主包?

将相机捕获的图像保存到ios中的文档目录中[重复]

xcode sqlite3 如何将数据库从捆绑包复制到文档文件夹?

如何在 ios 中打开一个 sqlite 文件进行阅读而不复制到文档?