2016-08-22 46 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或更多。

相關問題