在 Swift 中保存数组
Posted
技术标签:
【中文标题】在 Swift 中保存数组【英文标题】:Saving Arrays in Swift 【发布时间】:2014-12-06 12:14:53 【问题描述】:我有一个关于在 Apple 的新编程语言 Swift 中保存数组的问题。在 Objective-C 中,我使用 NSFileManager
... 保存了数据,但这在 Swift 中不再起作用。所以我想问我应该如何在不使用 NSUserDefaults 的情况下保存一个数组,这并不适合存储大量数据。我非常感谢任何帮助:]
【问题讨论】:
“不起作用”是什么意思?究竟是什么不工作?如果你用 Swift 重写你的 Objective-C 代码,它应该以完全相同的方式工作。 NSFileManager 的类参考显示了这些方法的 Swift 版本,因此 Apple 似乎认为它有效。 它们都使用完全相同的运行时并在底层调用完全相同的函数,因此没有理由不工作。 当我想找到可以存储数据的路径时,它实际上从我的 Objective-C 代码的第一行开始: NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);是 Objective-C 中的代码,但 NSDocumentDirectory 在 Swift 中不可用。 @ScottHunter 你能给我一个指向课程参考的链接吗? 谷歌 NSFileManager;它是最热门的。 【参考方案1】:首先(如果您的数组不是字符串类型)将其更改为字符串:
var notStringArray = [1, 2, 3, 4]
var array: [String] = []
for value in notStringArray
array.append(String(value))
然后将数组缩减为一个字符串:
var array = ["1", "2", "3", "4", "5"] //Ignore this line if your array wasn't of type String and you did the step above
var stringFromArray = reduce(array, "") $0.isEmpty ? $1 : "\($0)\n\($1)"
这将创建一个如下所示的字符串:
"1
2
3
4
5"
然后要写入和读取文件,请在文件顶部添加此类:
class File
class func open (path: String, utf8: NSStringEncoding = NSUTF8StringEncoding) -> String?
var error: NSError? //
return NSFileManager().fileExistsAtPath(path) ? String(contentsOfFile: path, encoding: utf8, error: &error)! : nil
class func save (path: String, fileContent: String, utf8: NSStringEncoding = NSUTF8StringEncoding) -> Bool
var error: NSError? //
return fileContent.writeToFile(path, atomically: true, encoding: utf8, error: &error)
(别忘了导入 UIKit)
保存到文件:
let didSave = File.save("DirectoryOfFile", content: stringFromArray)
if didSave
println("file saved")
else
println("error saving file")
要取回它:
var stringFromFile = ""
if let loadData = File.open("DirectoryOfFile")
stringFromFile = loadData
else
println("error reading file")
将其放回数组中:
var newArray: [String] = [] //Creates empty string array
newArray = stringFromFile.componentsSeparatedByString("\n")
你有它
【讨论】:
请在你的问题中告诉我你的班级。我在我的问题中添加了如果您的数组不是字符串类型该怎么办 可能是我在网上找到的 很高兴你喜欢它,我也为 url 而不是路径创建了相同的内容以上是关于在 Swift 中保存数组的主要内容,如果未能解决你的问题,请参考以下文章
如何在 xCode 中保存 UIimages 数组(swift)
Swift:将一个对象数组和另一个对象数组保存到 NSUserDefaults 中
从 Firebase 读取数据并保存到数组中 (Swift)