2015-09-04 36 views
0

我想將數據寫入文件,如果文件不存在,則創建它,否則將其覆蓋。我正在使用Swift。這就是我試圖同時學習斯威夫特:將int和字符串數據寫入文件

//Get documents directory 
let docDir = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).last as? String 

//get file path, I write data to this file 
let filePath = docDir!.stringByAppendingPathComponent(「myFile.txt」) 

//Write integer data to file 
let intData = 10 
String(intData).writeToFile(filePath, atomically: false, encoding: NSUTF8StringEncoding, error: nil); 

//Write String data to file 
let strData = 「strstr」 
strData.writeToFile(filePath, atomically: false, encoding: NSUTF8StringEncoding, error: nil); 

由於我在的iOS &斯威夫特新手,我想知道是否有更好的方式來做事?

(至少,我覺得在我當前的代碼,我需要寫文件,該文件是冗長的前總是轉換成字符串整數)。

===更新===

我google搜索&發現有人用NSOutputStream來實現類似的事情,我想知道哪個更好&爲什麼最好用NSOutputStream

+0

您的工具簡單明瞭 – Bannings

回答

0

您是在正確的軌道

對於簡單數據類型的不同,使用DocumentDirectory你已經是很不錯的方式。它很容易實現,並且很容易從中獲取值。使用該方法並不意味着你必須保存一個.txt文件。你有沒有考慮過保存爲plist文件?這將允許您保持條目爲布爾,數字,日期或字符串 - 消除轉換。有關保存的plist到NSUserDefaults的更多信息,請點擊這裏Save Data to .plist File in Swift

的Plist是偉大的,但有侷限性

可以省下不少其他類型的在plist中爲好,但你需要將它們編碼爲NSData對象被保存在plist中。 這可能是危險的,雖然。使用plists存儲很容易,它誘使我們濫用它們。平板電腦並不是一個數據庫,如果您依賴它們來存儲圖像或圖像陣列(yikes),它們可能會導致您的應用速度非常慢並且內存效率低下。

更加強烈儲存看看CoreData

如果你最終想要保存之類的圖像或大量的數據,您將需要調查像核心數據,這基本上是一個數據模型(一種數據庫),您的應用程序可以運行。如果你最終需要這個,那麼就省下頭痛,然後查看MagicalRecord github(https://github.com/magicalpanda/MagicalRecord)。