2015年10月27日火曜日

【Xcode / Swift入門】データを保存してみよう

本稿では、Swiftを使ってデータを保持する方法について説明したいと思います。
データの保存方法としては、データベースやファイルなどに保存する方法がありますが、今回は、端末のストレージに半永久的に保存可能なNSUserDefaultsについて説明したいと思います。

NSUserDefaultsの使用方法はとっても簡単です。
1、データの保存(セット)
2、データの取り出し
この2つを設定するだけです。


データの保存(セット)

データの保存方法は、override func viewDidLoad(){ }の中に以下を記載します。

 NSUserDefaults.standardUserDefaults().setObject("保存したい文字列", forKey: "キー")

setObject関数が値を保存する関数で、1番目の引数に保存するデータを記述し、2番目の引数にデータを取り出す際に使用するキーを記述します。

上記の例の場合、「保存したい文字列」という値がキーというKeyと関連付けられて保存されます。

データの取り出し

データを取り出す場合は、override func viewDidLoad(){ }の中に以下を記載ます。

NSUserDefaults.standardUserDefaults().objectForKey("allGreeting")

ObjectForKey関数がデータを取り出す関数で、引数として、データを保存する際に指定したキーを記述することにより、キーと一致するデータを取り出すことが可能になります。

使い方(サンプル)


では、実際にプロジェクトを作成し、データを保存してみたいと思います。
Xcodeを開いて、
Create a new Xcode project → Single View Application → product name を”Save Data”としてCreateボタン
を押します。

プロジェクトが作成されたら、ViewController.swiftを選択し、override func viewDidLoad(){ }内に以下を追記します。
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        NSUserDefaults.standardUserDefaults().setObject("hello", forKey: "GREETING")
        
        let greeting = NSUserDefaults.standardUserDefaults().objectForKey("GREETING") as! String
        
        print(greeting)
    }

上記は、GREETINGというキーで文字列「hello」を保存し、それをString型として取り出し、greetingという変数に代入していることになります。ここで、一旦ビルドしてみます。すると、下図の通り、setObjectを削除してもHelloが消えない(保存されたまま)になっていることが確認できます。




同様に配列もデータの保存が可能です。下記のように記載し、ビルド後、SetObjectをコメントアウトしてもデバッグエリアから文字列が消えないことが確認できます。
先ほどは、String型として(as String)データを取り出していましたが、今回は、配列ですので、Array型として(as NSArray)データを取り出します。
    
        override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        let array = ["good morning", "hello", "good evening", "good night "]
        
        NSUserDefaults.standardUserDefaults().setObject(array, forKey: "GREETINGS")
        
        let greetings = NSUserDefaults.standardUserDefaults().objectForKey("GREETINGS") as! NSArray
        
        print(greetings[3])
        
        
    }




このように、NSUserDefaultsを使用することにより、簡単にデータの保存、取り出しができるようになります。

では、次回はTableView、Segue、データ保存を使って、ToDoリストを作ってみたいと思います。



1 件のコメント: