↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

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

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

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


2021-05-14 14:21:41

WatchOSのwatchconnectivityのFiletransferの落とし穴。と、避け方。

AppleWatch 実機だと成功するんだけど、シュミレーターだと失敗するという、、、 昔作成してた時は成功してたのになーと思って調べると、どうやら昔は成功してたみたい。watchOS6以降は...

2021-05-06 14:04:37

LINEのアニメーションスタンプ制作の落とし穴、、、失敗談

ゴールデンウィークにLINEスタンプを作成してみました。 作り切って申請も通したんですが、意図したアニメーションと違う、、、、 LINEクリエーターの画面だと、アニメーションのプレビュー...

2021-05-01 18:05:35

久しぶりのAdmobをobjective-cに実装。コンパイルエラーだらけ。バーミッション不具合でエミュレータにインスコできない。

忘れないようにメモ エミュレータにアプリをインストールする際にパーミッション系のエラーがでた時、また、iphone実機にインストールする際にも権限系のエラーが出る場合。 ターゲット→ex...
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!