我正在使用NSUserDefaults.standardUserDefaults()来保存从WebService到iPhone内存的JSON字符串。当我加载它以使用我的解析器函数时,处理速度非常慢。我不想使用RealmIO或任何数据库,因为这不是必需的。我想问有没有比NSUserDefaults更快的方法? Please check my JSON file (I need store more than 20 files like that)
答案 0 :(得分:0)
不是将数据保存到NSUserDefaults
,而应将其保存到其他文件,这样效率会更高。
以下是如何做到这一点:
// Build file url
let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).last!
let fileURL = documentsURL.URLByAppendingPathComponent("file_1.json", isDirectory: false)
// Write
let jsonString = "..."
let jsonData = jsonString.dataUsingEncoding(NSUTF8StringEncoding)
do {
try jsonData?.writeToURL(fileURL, options: NSDataWritingOptions())
} catch {
NSLog("Writing file to `\(fileURL)` failed with error : \(error)")
}
// Read
do {
let jsonData = try NSData(contentsOfURL: fileURL, options: NSDataReadingOptions())
let jsonString = String(data: jsonData, encoding: NSUTF8StringEncoding)
} catch {
NSLog("Reading file at url `\(fileURL)` failed with error : \(error)")
}
答案 1 :(得分:0)
NSUserDefaults不是数据库。如果您的JSON文档超过100 KB,则将它们存储在单独的文档中。请注意,每次更改任何用户默认值时,所有用户默认值都必须写入文件。如果您有20个JSON文档,每个1MB,那么为每个用户默认编写20MB或更多,您更改。