NSUserDefaults.standardUserDefaults()を使用して、WebServiceから取得したJSON文字列をiPhoneメモリに保存しています。パーサー関数で使用するために読み込むと処理速度が遅くなります。 RealmIOやデータベースを使用したくないのは、その必要がないからです。 NSUserDefaultsより速い方法があるのですか? Please check my JSON file (I need store more than 20 files like that)IOS JSON文字列をメモリに保存してロードする方法
0
A
答えて
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を超える場合は、それらを別々の文書にまとめて保管してください。 を変更するたびに、ユーザーのデフォルト値は、すべてのユーザーのデフォルト値をファイルに書き込む必要があります。 1MBごとに20のJSON文書がある場合は、の場合は20MB以上、すべてデフォルトの場合はとなります。
JSON文字列ではなくJSONデータです。 JSONドキュメントは文字列ではありません。すべてのインタフェースがNSDataを予期したり生成したりします。 – gnasher729