このページの本文へ

iCloudで他のiOSデバイスとデータを共有する (2/2)

2015年11月30日 11時33分更新

文●森 巧尚

  • この記事をはてなブックマークに追加
本文印刷

[3]XcodeでプロジェクトにiCloudを使う設定をする

Xcodeに、iCloudを使う設定をします。

「Capabilities」タブを選択し、「iCloud」のスイッチをONにします。「To enable iCloud, select a Development Team to use for provisioning」というポップアップが表示されるので、開発者の名前を選択して「Choose」ボタンをクリックします。

「iCloud」スイッチがONになり使えるようになります。今回は「Key-value storage」を使うのでチェックします。

[4]アプリを作る

iCloudの「Key-value storage」を使ったアプリ制作の準備ができました。iCloudでデータが保存されるのを確認するため、テキストフィールドを使って、iCloudの文字データを表示したり、入力した文字を保存したりするアプリを作ってみましょう。

1)画面に[TextField]を配置してアプリ画面を作ります。

「Main.storyboard」を選択し、右下のライブラリから[TextField]を1つドラッグ&ドロップして中央に配置します。右下の「|△|」ボタンを押して、「Reset to Suggested Constraints(自動レイアウト設定)」を選択します。

Main.storyboardの仮画面の中央にボタンを配置しただけでは、縦長のiPhone画面で見るとボタンが端に表示されてしまいます。自動レイアウト設定をすることで、縦長の画面でも中央に表示されます。

2)[textView]に名前をつけてコントロールします。

メニューで「View」→「Assitant Editor」→「Show Assistant Editor」を選択して、「アシスタントエディター」を表示し、キーボードのcontrolを押しながら、TextFieldをViewController.swiftへドラッグして、名前を「myTextField」とします。

ViewControll.swiftにコード、


@IBOutlet weak var myTextField: UITextField!

が追加されます。

3)テキストフィールドのソフトキーボードを制御します。

テキストフィールドはタップするとソフトキーボードが現れますが、このとき「Return」キーを押すと、ソフトキーボードを閉じて処理を実行する関数を作ります。

キーボードのcontrolを押しながら[TextField]を右画面のViewController.swiftへドラッグし、「Connection」を「Action」に切り換えます。「Event」を「Did End On Exit」にして、「Name」は、「tapReturn」とします。

4)ViewController.swiftに、プログラムを記述します。

画面が表示されたとき、iCloudに保存されたデータがあったら、テキストフィールドに表示するプログラムを記述します。

記述したプログラムは以下の通りです。


//(中略)
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 設定したiCloudのデータにアクセスするオブジェクトを作ります
        let vStore = NSUbiquitousKeyValueStore.defaultStore()
        // もし"inputText"というキーで保存した文字データがあったら
        if let str = vStore.stringForKey("inputText") {
            // テキストフィールドに表示する
            myTextField.text = str
        }
    }
//(中略)

次に、ソフトキーボードでReturnキーが押されたときに、テキストフィールドの文字をiCloudに保存するプログラムを記述します。

記述したプログラムは以下の通りです。


//(中略)
    @IBAction func tapReturn(sender: AnyObject) {
        // 設定したiCloudのデータにアクセスするオブジェクトを作ります
        let vStore = NSUbiquitousKeyValueStore.defaultStore()
        // もしテキストフィールドに文字が入っていたら
        if let str = myTextField.text {
            // iCloudに"inputText"というキーで文字をセットして
            vStore.setString(str, forKey: "inputText")
            // iCloudに保存する
            vStore.synchronize()
        }
    }
//(中略)

[5]実機でテストする

iCloudはシミュレータでは動かないので、iPhoneの実機を接続してテストします。

MacとiPhoneの実機をUSB接続すると、左上のスキームメニューにつないだiPhoneの名前が表示されるます。選択して「Run」ボタンを押すと、アプリが実機にインストールされ起動します。

テキストフィールドをタップするとソフトキーボードが表示されるので、何か文字を入力し、Returnキーを押すと、ソフトキーボードが閉じてiCloudに文字が保存されます。

保存されたか確認してみましょう。「Stop」ボタンを押してアプリを終了します。再び「Run」ボタンを押すと、再びインストールされてアプリが起動し、今度は先ほど入力した文字が表示されるので、iCloudのデータを表示したことがわかります。

iPadなど他のデバイスをつないで「Run」ボタンでインストールすると、同じ文字が表示されます。

今回は、iCloudについて解説しました。iCloudを通してつながることで、iPhoneの作業の続きをiPadでと、デバイスを越えて作業できます。

7回に渡って紹介してきた『Swiftで「つながるiOSアプリ」』の連載はこれで終わりです。iPhoneアプリと外の世界をうまくつなげて、新しいアプリを考えてみてください。

前へ 1 2 次へ

この連載の記事

一覧へ
Web Professionalトップページバナー

この記事の編集者は以下の記事をオススメしています

ASCII.jp会員サービス 週刊Web Professional登録

Webディレクター江口明日香が行く