关于采取路径的建议:核心数据与默认值
Suggestion on path to take: Coredata vs NSDefault
我目前正在决定是使用 CoreData
还是 NSUserDefaults
。我正在尝试存储两个数组并能够删除和写入它们。根据我的研究,NSUserDefaults
只允许 NSArray
s,这意味着一旦创建它们我就无法更改它们。但是,我认为解决这个问题的一种方法是简单地保存数组中的所有数据,将其删除,然后将其重新保存为一个新数组。想法?
实际上,NSUserDefault
的用途就像您的 iDevice 中的 设置 应用程序一样。它用于存储一些设置数据而不是作为数据库。由于其类似字典的语法,有许多开发人员使用它来方便地存储小块数据,而不是存储 Apple 建议的设置数据。 NSUserDefault
的设计不是为了处理繁重的 I/O 所以你不能把它当作一个普通的数据库来使用。基于以上几点,大家可以根据自己的需要选择使用什么。
保存数据有3个选项
- NSUSerDefault
- 文件系统
- 核心数据
NSUSerDefault
用于存储用户偏好数据。这是一个键值存储。这不是一个安全的地方,而且很容易进入。不要在此处存储任何敏感数据。
文件系统
非常简单灵活的数据存储。您可以使用 NScoding 将自定义对象保存到文件。 NSArray 有一种将其对象保存到文件的方法
NSArray writeToFile:
核心数据
核心数据是数据库。它是所有 3 个选项中最复杂和最强大的数据存储。它允许您创建数据库方案、模型、运行 查询和执行其他操作。
回答
在你的情况下我会选择文件系统,将数据保存到文件。
Swift 1.2
let documents = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String
let filePath = documents.stringByAppendingPathComponent("file.plist")
let array: NSArray = [1, 2, 3]
let res = array.writeToFile(filePath, atomically: true)
let array2 = NSArray(contentsOfFile: filePath)
Swift 2.0
stringByAppendingPathComponent
在 Swift 2.0
中已弃用
有一个更好的 API 可以使用 FileManager
和 NSURL
处理路径
let documents = NSFileManager.defaultManager().URLsForDirectory(.DocumentationDirectory, inDomains: .UserDomainMask)[0]
let fileUrl = documents.URLByAppendingPathComponent("file.plist")
let array: NSArray = [1, 2, 3]
let res = array.writeToURL(fileUrl, atomically: true)
let array2 = NSArray(contentsOfURL: fileUrl)
我目前正在决定是使用 CoreData
还是 NSUserDefaults
。我正在尝试存储两个数组并能够删除和写入它们。根据我的研究,NSUserDefaults
只允许 NSArray
s,这意味着一旦创建它们我就无法更改它们。但是,我认为解决这个问题的一种方法是简单地保存数组中的所有数据,将其删除,然后将其重新保存为一个新数组。想法?
实际上,NSUserDefault
的用途就像您的 iDevice 中的 设置 应用程序一样。它用于存储一些设置数据而不是作为数据库。由于其类似字典的语法,有许多开发人员使用它来方便地存储小块数据,而不是存储 Apple 建议的设置数据。 NSUserDefault
的设计不是为了处理繁重的 I/O 所以你不能把它当作一个普通的数据库来使用。基于以上几点,大家可以根据自己的需要选择使用什么。
保存数据有3个选项
- NSUSerDefault
- 文件系统
- 核心数据
NSUSerDefault
用于存储用户偏好数据。这是一个键值存储。这不是一个安全的地方,而且很容易进入。不要在此处存储任何敏感数据。
文件系统
非常简单灵活的数据存储。您可以使用 NScoding 将自定义对象保存到文件。 NSArray 有一种将其对象保存到文件的方法 NSArray writeToFile:
核心数据
核心数据是数据库。它是所有 3 个选项中最复杂和最强大的数据存储。它允许您创建数据库方案、模型、运行 查询和执行其他操作。
回答
在你的情况下我会选择文件系统,将数据保存到文件。
Swift 1.2
let documents = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String
let filePath = documents.stringByAppendingPathComponent("file.plist")
let array: NSArray = [1, 2, 3]
let res = array.writeToFile(filePath, atomically: true)
let array2 = NSArray(contentsOfFile: filePath)
Swift 2.0
stringByAppendingPathComponent
在 Swift 2.0
中已弃用
有一个更好的 API 可以使用 FileManager
和 NSURL
let documents = NSFileManager.defaultManager().URLsForDirectory(.DocumentationDirectory, inDomains: .UserDomainMask)[0]
let fileUrl = documents.URLByAppendingPathComponent("file.plist")
let array: NSArray = [1, 2, 3]
let res = array.writeToURL(fileUrl, atomically: true)
let array2 = NSArray(contentsOfURL: fileUrl)