すごい小ネタですが、いいなと思ったのでメモ。
以下のようなデータの形を持ちたいと考えていました。
swift
[
["ID": "1", "name": a],
["ID": "2", "name": b],
["ID": "3", "name": c],
]
辞書型のデータを配列で持つって感じですね。
ちょっとしたデータだったのでわざわざCoreData使うまでもないなと思ったので
UserDefaultsを使おうと途中まで書いていました。
がしかし、途中で実はこれちょっとまずったなと思いました。
基本的にIDからnameを引こうと思っていたので、毎回配列の中身を見てIDをみるのってあんまり賢くないなと。。
大したデータ量じゃないのでパフォーマンス的に問題なかったのですが、もっといい方法ないかなーと思い先輩に相談した所、以下のように保存すればいいんじゃない?とアドバイスもらいました
swift
let ud = NSUserDefaults.standardUserDefaults()
ud.setObject(name, forKey: "hogehoge_" + ID)
おお、確かにこれならいざ値を使う時にID渡すだけで検索になっていい!
データベース作るまでもないならこれぐらいで十分だし早く書けるしシンプルでいいなと思ったのでメモです。
あと、余談ですが毎回UserDefaultsを初期化してsynchronizeするのはちょっとしょっぱいので
ラッパークラスを作るともっとシンプルにかけてよさそうですね。
swift
class HogeUserDefaults {
private class func userDefaults() -> NSUserDefaults {
return NSUserDefaults.standardUserDefaults()
}
class func setObject(object:AnyObject, key:String) -> Void {
self.userDefaults.setObject(name, forKey: "hogehoge_" + "ID")
self.userDefaults.synchronize()
}
}
class Hoge {
func save() {
HogeUserDefaults.setObject(object,key) // 一行で簡単呼び出し!
}
}
短いですが以上です!