HOME > データ保存
端末に保存されたデータを永続化します。アプリを閉じてもこのデータは保持される開発には不可欠なクラス。永続化させるにはNSUserDefault以外にもファイルに書き込んで保存したり、DBに追加したりと 多彩な方法がありますが、この記事は「NSUserDefault」にフォーカスします。保存できる最大サイズは設定されておらず端末依存。どれだけでも保存できますが、端末によってアプリ毎の保存領域サイズが違う様で微妙ですが、 1000〜10000個とか保存しても動作するようですので、保存数に関してはあまり気にしないでアプリの総合的にどの部分にメモリを多く利用するかを調整する必要はあるかもしれません。
参考:Swiftで配列をNSUserDefaultsを使って保存・読み込み
参考:NSUserDefaultsに潜む危険
参考:NSUserDefaults、ファイル、データベース、どれで保存するか
参考:Maximum size of objects that can be stored in NSUserDefaults
//保存
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
//保存
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
//保存
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/";
}
//保存
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]
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "boolKey");
NSUserDefaults.standardUserDefaults().synchronize();
let obj: Bool = NSUserDefaults.standardUserDefaults().boolForKey("boolKey");
println(obj); //true
NSUserDefaults.standardUserDefaults().setFloat(1.0, forKey: "floatKey");
NSUserDefaults.standardUserDefaults().synchronize();
let f: Float = NSUserDefaults.standardUserDefaults().floatForKey("floatKey");
println(f);//1.0
NSUserDefaults.standardUserDefaults().setDouble(1.0, forKey: "floatKey");
NSUserDefaults.standardUserDefaults().synchronize();
let d: Float = NSUserDefaults.standardUserDefaults().doubleForKey("floatKey");
println(d);//1.0
NSUserDefaults.standardUserDefaults().setInteger(123, forKey: "intKey");
NSUserDefaults.standardUserDefaults().synchronize();
let i: Int = NSUserDefaults.standardUserDefaults().integerForKey("intKey");
println(i);//123
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
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 | The pitfalls of Filetransfer in watchconnectivity on WatchOS. And how to avoid.
AppleWatch it succeeds with the actual machine, but if it is a simulator, it will fail、、、
When I... |
2021-05-06 14:04:37 | Line's animation stamp production pitfalls 、、、 failure story
I tried to make a LINE sticker during Golden Week.
I made it and applied, but it was different f... |
2021-04-22 14:54:53 | Cool carousel carefully selected 3 points! Astringent image slider using WebGL.
I was on a trip to find a cool slider yesterday.
It's simple, easy to use, and has a good de... |
Tweet
![]() |
|||
|