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

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

Webブラウザをチラ見するWebabit

WebabitはWebブラウザをチラ見する為のアプリです。Notification CenterのToday Widegetでブラウザチェックしたり、 AppleWatchから確認したりできる、なんともいえない「ふーん」なアプリです

WatchKitでAppleWatch開発

AppleのティムクックCEOがAppleWatchの発売が2015年4月と発表しましたね!あと2ヶ月ですので、本日からWatchKitを重点的に記事を記載していってアプリを 同時に開発してけたらと思います。

AppleWatchアプリの申請

AppleWatchアプリの申請が4月1日から始まりましたので、少しトライしてみました。ハマった箇所を共有です。 アプリをArchiveしてValidateしてから2パターンの不具合、あとはアップロードには成功したのですが、Itunesに反映されなかった 現象を共有です
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!