2015-09-04 77 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)。