【问题标题】:Swift: Saving NSDictionary to a file, because NSUserDefaults is to slowSwift:将 NSDictionary 保存到文件中,因为 NSUserDefaults 会变慢
【发布时间】:2014-12-01 13:23:27
【问题描述】:

我正在使用 NSUserDefaults 来保存更多的 10 个大 NSDictionary。

因为性能很慢,我想将数据保存到一个 [或 10 个文件] 中,而不是使用 NSUserDefaults。我只是在应用程序启动时才需要数据,所以我的想法是,将数据保存到文件中并仅将我需要的数据快速保存到 NSUserDefaults 中。

我在堆栈溢出时找到了这个解决方案: Read and write data from text file

let dirs : [String]? = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true) as? [String]
if ((dirs) != nil) {
    let dir = dirs![0]; //documents directory
    let path = dir.stringByAppendingPathComponent(file);
    let text = "some text"

    //writing
    text.writeToFile(path, atomically: false, encoding: NSUTF8StringEncoding, error: nil);

    //reading
    let text2 = String(contentsOfFile: path, encoding: NSUTF8StringEncoding, error: nil)
}

这适用于字符串。但是当我尝试使用

NameOfMyDict.writeToFile

我收到一个错误,因为字典没有 writeToFile 函数。

如何将字典保存到文件中?

【问题讨论】:

  • 也许你应该使用CoreData

标签: ios file swift save nsdictionary


【解决方案1】:

NSDictionary 提供了保存到文件的功能。它是Foundation 框架的一部分:

writeToFile(_ path: String, atomically flag: Bool) -> Bool

如果您使用 swift Dictionary<>,您可能需要转换为 NSDictionary。字典的所有元素都应该实现NSCoding 协议。

【讨论】:

    【解决方案2】:

    您可以将其序列化为 JSON 并将 JSON 字符串保存到文件中。见NSJSONSerialization

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-03
      • 2016-11-12
      • 1970-01-01
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      相关资源
      最近更新 更多