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 | 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... |
Tweet | |||
|