以下显示的功能在Xcode中运行良好,只要我在OSX应用程序中使用它们...... 现在我写了一个iOS应用程序,我想在.txt文件中保存一些数据并再次读取它们,但它不起作用......既没有写入文件,也没有读取... 我已经在网上寻找解决方案,但我只找到解决方案,只要它在OSX应用程序中不起作用(错误的目录等等),但这不是我的情况,那里我已经让它工作了......
当我在iOS模拟器中使用它以及如何让它在那里运行时有什么区别?
//下面的代码现在是更正后的版本(在发布之前没有“这个缺失”部分。
void SaveData(std::string FileName)
{
//!!this was missing
char *H = getenv("HOME");
std::string Home(H);
std::string FileName = Home + "/Documents/" + FileName;
std::ofstream FileOut (FileName);
if (FileOut.is_open())
{
//!!write data to file
FileOut.close();
}
}
void LoadData(std::string FileName)
{
//!!this was missing
char *H = getenv("HOME");
std::string Home(H);
std::string FileName = Home + "/Documents/" + FileName;
std::ifstream FileIn;
FileIn.open(FileName.c_str(), std::ios::in);
if(not FileIn.good())
{
//!!error message
return;
}
//!!read data from file
FileIn.close();
}
答案 0 :(得分:1)
iOS是Sandboxed并限制了可以读取和写入的区域,并且users/me/documents/xcodeprojects
不正确。
有关详细信息,请参阅About the iOS File System。
您可以编写多个目录,而Documents目录可能就是您想要的。你必须调用以获取路径,这里是C ++,Objective-C和Swift中的示例调用:
C ++(Thx:Moritz Buchty):
char *H = getenv("HOME");
std::string Home(H);
std::string FileName = Home + "/Documents/" + FileName;
ObjC:
NSArray *documentDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
夫特:
let documentDirectoryPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first as! String
答案 1 :(得分:0)
您需要将文件保存到应用程序的Documents
文件夹中。有关它的更多信息,请阅读this answer.