我想将数据写入文件,如果文件不存在,则创建它,否则覆盖它。我正在使用 Swift 。这是我在学习Swift时尝试过的:
//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和Android的新手斯威夫特,我想知道有更好的办法吗?
(至少,我觉得在我当前的代码中,我需要在写入文件之前始终将整数转换为String。)
===更新===
我用google搜索&发现有人使用NSOutputStream
来实现类似的东西,我想知道哪个更好&为何,何时更好地使用NSOutputStream
?
答案 0 :(得分:0)
您走在正确的轨道上
对于简单的数据类型,使用DocumentDirectory的方式非常好。它易于实现,并且易于访问值。使用该方法并不意味着您必须保存.txt文件。您是否考虑过将其保存为plist文件?这将允许您将条目保留为Bool,Number,Date或String - 消除转换。有关将plist保存到NSUserDefaults的更多信息,请单击此处Save Data to .plist File in Swift
Plists很棒,但有局限性
您也可以在plist中保存许多其他类型,但是您需要将它们编码为要保存在plist中的NSData对象。 这可能很危险,但。使用钳子进行存储非常容易,它会诱使我们滥用它们。 Plists并不意味着它们是一个数据库,如果您依赖它们存储图像或图像数组(yikes),它们可能会导致您的应用程序速度非常慢且内存效率低下。
有关更强烈的存储空间,请查看CoreData
如果你最终想要保存图像或大量数据之类的东西,你需要调查像Core Data这样的东西,它本质上是你的应用可以运行的数据模型(一种数据库)。如果你最终需要这个,请避免让自己头疼并查看MagicalRecord github(https://github.com/magicalpanda/MagicalRecord)。