2016-08-22 69 views
0

我正在使用NSUserDefaults.standardUserDefaults()来保存从WebService到iPhone内存的JSON字符串。当我加载它来使用我的解析器功能时,处理速度非常慢。我不想使用RealmIO或任何数据库,因为这个东西没有必要。我想问有没有比NSUserDefaults更快的方法? Please check my JSON file (I need store more than 20 files like that)IOS如何保存并加载JSON字符串到内存

+0

不是JSON字符串,而是JSON数据。 JSON文件不是字符串。所有接口都期望或生成NSData。 – gnasher729

回答

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

是NSUserDefaults的不是一个数据库。如果您的JSON文档超过100 KB,则将它们存储在单独的文档中。请注意,每次更改任何用户默认值时,所有用户默认值都必须写入文件。如果您有20个每个1MB的JSON文档,那么每个用户默认情况下您将更改为,写入20MB或更多。

相关问题