iOS

Swift:iCloudアクセス・ソースコード

iCloud containerにアクセスするサンプルプログラムのiOS / macOSのソースコードです。

update(10/12/2017) Swift4:iCloudコンテナのアクセス(訂正)を参照してください。ソースコードは今から修正予定です。

Xcode8.3.3対応済みです。動作概要に図示してあるように、まずiOSアプリからiCloud containerにファイルを書き出し、次にmacOSアプリでこれを読み出します。それから、macOSアプリのファイルをiCloud containerに書き出し、最後に、iOSアプリでこれを読み込み、ファイル内容を表示します。
ソースコード、ID等の最新版は次のリンクにあります。

主な変更点(2017.7.19)

  • フォルダ名、アプリ名等を変更しました。対応する内容は概要説明を参照してください。
  • iCloud Containers IDは2種類を割り当てました。使用しているのは.mesaMeterのみ。
  • ファイル名iOSMeter.txtとmacOSMeter.txtは固定にしました(変更不可)。
  • iOSファイルを書き出すとき、iOS2のようにシーケンス番号を付加しました。これにより、iCloud Containerに複数ファイルが書き込まれたとき、その関係を調査できるようになりました。ファイルを配列にスタックし、探し出す、あるいは削除するなどの処理をどう行うかそれぞれのアプリで研究する必要があります。
  • macOSMeter.txtの読み込みに成功しても、自動的にこのファイルを削除しないように改めました。必要なら手動でRemoveをクリックして削除します。
  • iOSアプリで5をクリックしたとき、ファイル読み込みが別タスクで行われるため、storyboardの変更ができません。このため、6をクリックして表示を行わせる必要があります(ここは面倒でわかりにくい)。
  • 5の上のmacOSをクリックすると、表示内容とカウントがクリアされます。
  • 黄色の部分はボタンになっています。

 

  • 動作概要
    Screenshot 2017-07-21 03.46.06

 

  • プロジェクトやID等の設定
    iCloud Documentsにチェックを入れ、CloudKitにはチェックを入れない。iCloud containersを同じにする。この2点がポイントです。
    Screenshot 2017-07-19 23.07.18

 

  • App IDs

Screenshot 2017-07-15 00.32.25

注意事項:iCloudに書き出したファイルは、読み込み時にそれが自分のほしいファイルであるかどうか確認が必要です。ファイルを削除して管理しないと、ファイルが順番に読み込まれるようです。

Categories: iOS, Swift, 技術

Tagged as: