iOS上的应用程序专用目录,可以访问从Qt API创建文件



我在iOS上使用Qt应用程序,并希望将文件保存到应用程序的私人目录中,以便其他应用程序无法访问我的文件。通读此处的文档,数据容器下/Documents目录似乎是保存我的应用程序私有文件的路径。

首先,我选择使用返回的QStandardPaths::writableLocation(QStandardPaths::AppDataLocation)/var/mobile/Containers/Data/Application/123XX-XXXX-XXXX-XXXX/Library/Application Support/MyApp.但后来我发现我无法在那里创建任何文件。也尝试在应用程序文件夹中/Documents。但徒劳无功。

其次,我尝试了QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation)返回/var/mobile/Containers/Data/Application/123XX-XXXX-XXXX-XXXX/Documents。我可以在这里创建和保存我的文件。

在iOS上,创建应用程序专用文件的正确路径是什么?
如何使用Qt获取路径?

以某个ID命名为123XX-XXXX-XXXX-XXXX的目录,这是应用程序目录还是Library/Application Support/MyApp在同一个目录内?

我遇到了同样的问题,例如我创建了一个sqlite文件。但是您将创建的文件可以是您想要的每个文件。在我的示例中,我需要创建一个 sqlite 文件。

我是这样解决的:

QString dbName = "mydb.sql";
QString dbLocation;
#ifdef Q_OS_ANDROID
dbLocation = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
#endif
#ifdef Q_OS_IOS
dbLocation = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);
#endif
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(dbLocation + "/" + dbName);
qDebug() << db.database(dbLocation + "/" + dbName);
qDebug() << db.databaseName();

现在你可以保存文件了,我用DocumentsLocation来获取一个路径,总是在iOS上工作,但在Android上不起作用,为了准备好Android,你使用另一个路径:AppDataLocation。 在文档位置,您可以在iOS上写入/读取/放置和创建文件。 在 AppDataLocation 位置,您可以在 Android 上写入/读取/放置和创建文件。 在文档位置中未拒绝权限。

最新更新