2016-08-22 1 views
0

NSUserDefaults.standardUserDefaults()を使用して、WebServiceから取得したJSON文字列をiPhoneメモリに保存しています。パーサー関数で使用するために読み込むと処理速度が遅くなります。 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を超える場合は、それらを別々の文書にまとめて保管してください。 を変更するたびに、ユーザーのデフォルト値は、すべてのユーザーのデフォルト値をファイルに書き込む必要があります。 1MBごとに20のJSON文書がある場合は、の場合は20MB以上、すべてデフォルトの場合はとなります。