Serialization 在Swift中保存数组

Serialization 在Swift中保存数组,serialization,swift,save,Serialization,Swift,Save,我有一个关于用苹果新的编程语言Swift保存数组的问题。在Objective-C中,我使用NSFileManager保存了数据。。。但这在斯威夫特已经不起作用了。因此,我想问,如何在不使用NSUserDefaults的情况下保存数组,因为NSUserDefaults不适合存储大量数据。非常感谢您的帮助:首先(如果您的数组不是字符串类型)将其更改为字符串: var notStringArray = [1, 2, 3, 4] var array: [String] = [] for value i

我有一个关于用苹果新的编程语言Swift保存数组的问题。在Objective-C中,我使用
NSFileManager
保存了数据。。。但这在斯威夫特已经不起作用了。因此,我想问,如何在不使用NSUserDefaults的情况下保存数组,因为NSUserDefaults不适合存储大量数据。非常感谢您的帮助:

首先(如果您的数组不是字符串类型)将其更改为字符串:

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")

现在你有了它

你说“不起作用”是什么意思?到底是什么不起作用?如果你用Swift重写Objective-C代码,它应该以完全相同的方式工作。NSFileManager的类参考显示了这些方法的Swift版本,因此苹果似乎认为它可以工作。它们都使用完全相同的运行时,并在引擎盖下调用完全相同的函数,所以它没有理由不起作用。当我想找到一个可以存储数据的路径时,它实际上是从我的Objective-C代码的第一行开始的:NSArray*paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);是Objective-C中的代码,但NSDocumentDirectory在Swift中不可用@ScottHunter你能给我一个班级参考的链接吗;这是最热门的。请让我看看你的问题所在的班级。Iv'e在我的问题中添加了如果你的数组不是StringType,该怎么办可能是我在Internet上找到的我很高兴你喜欢它,我也为URL而不是路径创建了相同的数组