Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用qt5.2在iPhone上编写文件_Ios_Qt_Qt5 - Fatal编程技术网

Ios 如何使用qt5.2在iPhone上编写文件

Ios 如何使用qt5.2在iPhone上编写文件,ios,qt,qt5,Ios,Qt,Qt5,我正在用Qt5.2在iPhone上编写一个应用程序。当应用程序运行时,我想 将用户输入的一些信息保存到文件中,以便用户下次启动应用程序时,他将获得保存信息 我试着这样做: QString cur_dir = QDir::currentPath(); QString init_file = cur_dir+"/init.xml"; QSettings settings( init_file, QSettings::IniFormat ); settings.setValue("General/S

我正在用Qt5.2在iPhone上编写一个应用程序。当应用程序运行时,我想 将用户输入的一些信息保存到文件中,以便用户下次启动应用程序时,他将获得保存信息

我试着这样做:

QString cur_dir = QDir::currentPath();
QString init_file = cur_dir+"/init.xml";

QSettings settings( init_file, QSettings::IniFormat );
settings.setValue("General/SavedVariable", sel_label->text() );
但在我验证执行此操作时未创建该文件:

if( !QFileInfo( init_file ).exists() )
    std::cout << "FILE DOES NOT EXISTS " << std::endl;
else
    std::cout << "FILE EXISTS " << std::endl;
if(!QFileInfo(init_文件).exists())

我找到了解决办法。无法在捆绑目录中保存文件。你必须 保存在文档目录中。 下面是我用来做这件事的代码:

{
      QString cur_dir = QDir::currentPath();

      int found = cur_dir.lastIndexOf( "/" );

      QString leftSide = cur_dir.left(found+1);
      leftSide += "Documents";

      init_file = leftSide+"/init.xml";

      if( !QFileInfo( init_file ).exists() )
         writeConfig();
      else
         readConfig();
}

void
writeConfig( void )
{
    QSettings settings( init_file, QSettings::IniFormat );
    settings.setValue("General/SavedVariable", sel_label->text() );
}

void
readConfig( void )
{
    QSettings settings( init_file, QSettings::IniFormat );
    QString save_var = settings.value( "General/SavedVariable" ).toString();
    sel_label->setText( save_var );
}
这是一种方式。您还可以将objective C文件.mm添加到您的项目中 qt项目,并直接获取文档路径

NSString *rootPath = [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory,
                                                           NSUserDomainMask,
                                                           YES) objectAtIndex:0];

实际上,在IOS中,您无法将文件保存在当前目录中(检查起来还不错)。我使用class并编写了以下代码以使其跨平台:

QString path = QStandardPaths::standardLocations( QStandardPaths::AppDataLocation ).value(0);

QDir myDir(path);
if (!myDir.exists()) {
    myDir.mkpath(path);
}
QDir::setCurrent(path);

现在,可以将您的文件或目录设置为当前目录。

允许/预期应用程序写入iOS Documents目录。此处写入的数据是永久性的,将在iTunes备份过程中进行备份

#include <QStandardPaths>

QFile myfile(QStandardPaths::writableLocation(QStandardPaths::HomeLocation).append("/Documents/mystuff.txt"));
myfile.open(QIODevice::ReadWrite);
#包括
QFile myfile(qstandardpath::writableLocation(qstandardpath::HomeLocation).append(“/Documents/mystuff.txt”);
打开(QIODevice::ReadWrite);