Swift転職なら=>【LevTech】
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

HOME > データ保存

データ保存

NSUserDefault説明画像

端末に保存されたデータを永続化します。アプリを閉じてもこのデータは保持される開発には不可欠なクラス。永続化させるにはNSUserDefault以外にもファイルに書き込んで保存したり、DBに追加したりと 多彩な方法がありますが、この記事は「NSUserDefault」にフォーカスします。保存できる最大サイズは設定されておらず端末依存。どれだけでも保存できますが、端末によってアプリ毎の保存領域サイズが違う様で微妙ですが、 1000〜10000個とか保存しても動作するようですので、保存数に関してはあまり気にしないでアプリの総合的にどの部分にメモリを多く利用するかを調整する必要はあるかもしれません。


参考:Swiftで配列をNSUserDefaultsを使って保存・読み込み
参考:NSUserDefaultsに潜む危険
参考:NSUserDefaults、ファイル、データベース、どれで保存するか
参考:Maximum size of objects that can be stored in NSUserDefaults

サンプル構文(setObject)

String


//保存
NSUserDefaults.standardUserDefaults().setObject("I am a test value", forKey:"hogeKey");
NSUserDefaults.standardUserDefaults().synchronize();

//読み込み
let obj: AnyObject! = NSUserDefaults.standardUserDefaults().objectForKey("hogeKey");
println(obj); // //I am a test value

NSDate


//保存
NSUserDefaults.standardUserDefaults().setObject(NSDate(), forKey:"hogeKey");
NSUserDefaults.standardUserDefaults().synchronize();
        
//読み込み
let date: AnyObject! = NSUserDefaults.standardUserDefaults().objectForKey("hogeKey");
 println(date);// 2015-02-02 14:33:03 +0000

Dictionary


//保存
var hogeDic: Dictionary = ["title": "swift-salaryman", "url": "http://swift-salaryman.com/"]
NSUserDefaults.standardUserDefaults().setObject(hogeDic, forKey:"hogeDic");
NSUserDefaults.standardUserDefaults().synchronize();
        
//読み込み
let arr: AnyObject! = NSUserDefaults.standardUserDefaults().dictionaryForKey("hogeDic");
 println(arr);
 // {
    title = "swift-salaryman";
    url = "http://swift-salaryman.com/";
}

Array


//保存
let jumpArr = ["hop","step","jump"]
NSUserDefaults.standardUserDefaults().setObject(jumpArr, forKey:"hogeDic");
NSUserDefaults.standardUserDefaults().synchronize();
        
//読み込み(パターン1) object型で読み混み
let arr: AnyObject! = NSUserDefaults.standardUserDefaults().arrayForKey("hogeDic");
 println(arr);
 // (
    hop,
    step,
    jump
)

//読み込み(パターン2)Array型で読み混み
if((NSUserDefaults.standardUserDefaults().objectForKey("hogeDic")) != nil){
    if var arr2:Array = NSUserDefaults.standardUserDefaults().objectForKey("hogeDic") as? [String] {
        println(arr2);
    }
}
 
//[hop, step, jump]


サンプル構文(setBool,setFloat,setDouble,setInt,setURL)

(setBool) TRUE OR FALSE


  NSUserDefaults.standardUserDefaults().setBool(true, forKey: "boolKey");
        NSUserDefaults.standardUserDefaults().synchronize();
        let obj: Bool = NSUserDefaults.standardUserDefaults().boolForKey("boolKey");
        println(obj); //true
        

(setFloat) 32ビット長のFloat


NSUserDefaults.standardUserDefaults().setFloat(1.0, forKey: "floatKey");
        NSUserDefaults.standardUserDefaults().synchronize();
        let f: Float = NSUserDefaults.standardUserDefaults().floatForKey("floatKey");
        println(f);//1.0
        

(setDouble) 64ビット長のFloat


NSUserDefaults.standardUserDefaults().setDouble(1.0, forKey: "floatKey");
        NSUserDefaults.standardUserDefaults().synchronize();
        let d: Float = NSUserDefaults.standardUserDefaults().doubleForKey("floatKey");
        println(d);//1.0
        

(setInt) -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807


  NSUserDefaults.standardUserDefaults().setInteger(123, forKey: "intKey");
        NSUserDefaults.standardUserDefaults().synchronize();
        let i: Int = NSUserDefaults.standardUserDefaults().integerForKey("intKey");
        println(i);//123
        

(setURL)


NSUserDefaults.standardUserDefaults().setURL(NSURL(fileURLWithPath: "http://swift-salaryman.com")!, forKey: "urlKey");
        NSUserDefaults.standardUserDefaults().synchronize();
        let u: NSURL = NSUserDefaults.standardUserDefaults().URLForKey("urlKey")!;
        println(u);//http://swift-salaryman.com
        

NSUserDefaultUtilの例文

NSUserDefaultUtil.swiftをダウンロードする。(ご自由にご利用ください)

import Foundation

struct NSUserDefaultUtil {
    static func getValue(key:String)->AnyObject{
        let obj: AnyObject! = NSUserDefaults.standardUserDefaults().objectForKey(key);
        if (obj != nil){
            return obj;
        }else{
            return "";
        }
    }
    static func setValue(value:AnyObject,key:String){
        NSUserDefaults.standardUserDefaults().setObject(value, forKey:key);
        NSUserDefaults.standardUserDefaults().synchronize();
    }
}

//利用方法
println(NSUserDefaultUtil.getValue("hogeKey"));//空白
NSUserDefaultUtil.setValue("I am a test value", key: "hogeKey");
println(NSUserDefaultUtil.getValue("hogeKey"));//I am a test value

↓こんな記事もありますよ!

Pintoを1年利用してほんとにプログラマーの背筋がピンとなった(P!nto)

猫背どうにかならないかな、、、、。プログラマーとしての職業上日中8割9割は画面と押し問答している私は、 熱中すればするほど画面に食い入り知らず知らずに前のめりの姿勢に。姿勢が悪い、、、、分かってるんだけど、やめられない。

SwiftでZipファイルの解凍や圧縮する方法

SwiftでZipの解凍・圧縮処理の解説です。標準ライブラリにZip2があるやら3rdパーティのSSArchiveのObjective-Cのライブラリを Swiftにブリッジして利用するのが良い等の記載がありましたので調査してみます。

UIWebView

アプリの中にWebビューを作成して外部ネットワークやローカルのhtmlやcssやjsファイルと連携する方法の説明です。
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!