2016-03-04 72 views
2

下面顯示的功能在Xcode中運行良好,只要我在OSX應用程序中使用它們即可... 現在我寫了一個iOS應用程序,我想要保存在.txt文件中的一些數據,並再次閱讀它們,但它不起作用......既沒有文件寫入,也沒有讀取... 我已經搜索瞭解決方案的網絡,但我只找到解決方案,只要它不工作OSX應用程序(錯誤的目錄等...)但這不是我的情況,那裏我已經得到它的工作...XCode 7 - fstream無法在iPhone模擬器中工作

當我在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

沒有「寫入文件之前,需要對每行加密過程」是什麼意思?數據沒有「行」,它只是字節。線是應用程序級的概念。 – zaph

+0

什麼是文件路徑,將其添加到問題中。 iOS限制可以讀取和寫入的區域。 – zaph

+0

「加密過程」僅僅是一個評論,我需要稍後插入數據轉換函數,只要初始測試完成。它只是一個註釋,我忘了在發佈之前刪除它(我只將代碼分解到相關行中,這樣它們對於你們來說更具可讀性)。 文件路徑是「users/me/documents/xcodeprojects」,因此我存儲我的xcode項目的用戶定義路徑... 我期望類似這樣的問題,但我沒有在網上找到任何信息它應該是什麼(iOS vs OSX),如何設置(甚至是在哪裏設置)。 –

回答

1

的iOS是沙箱,並限制了可以讀取和寫入和users/me/documents/xcodeprojects是不正確的區域。

詳見About the iOS File System

有幾個目錄你可以寫和Documents目錄可能是你想要的。你必須撥打電話來獲取路徑,這裏有例如C++,Objective-C和斯威夫特稱:

C++(THX:莫里茨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 
+0

C++語法聽起來很有希望,因爲我甚至不需要讀取目錄在我的ObjC用戶界面的某處並將其路由,我可以在需要它的C++核心程序中直接讀取它。 –

+0

它的工作... 與一個小的調整... 恆char「/文檔」不能追加到char *家,構造函數是需要在...之間... 我在上面的示例中插入了新代碼,「This was missing」 –

+0

已更新的答案,Thx! – zaph

0

您需要將文件保存到您的應用程序的Documents文件夾。欲瞭解更多信息關於它,閱讀this answer.

+0

謝謝,現在這一切都開始有意義... 我一直在Google上搜索幾個星期,但可能是使用誤導性的關鍵字...它驅使我堅果... https://developer.apple.com/library /mac/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672-CH2-SW28 –

相關問題