iOS

iOS:一歩前進&ソースコード

iPhone 6シミュレータとiPhone5実機との間でiCloudコンテナでのファイル共有が確認できました。

まず、ソースコードはここに置きました。前にも書いた通り、[Swift3.0] iCloudに保存したテキストファイルで書き込み・読み込みがたいへん参考になりました。ありがとうございます。

現在のできばえは、次の通りです。

iPhone6シミュレータ

  • ビルドして、iPhone6シミュレータを動かす。
  • iPhone6シミュレータでwebページを読み込む。
  • 読み込んだwebページをボタン1を押してiCloudコンテナに書き込む。
  • 自分で書き込んだwebページをボタン2を押してiCloudコンテナから読み込む。
  • ファイル名を入れるボタンを押し、iCloudコンテナから正しくwebページが読み込まれているかアラートを表示する。OKが出力されれば正しい。

iPhone5実機

  • ビルドして、アプリをiPhone5実機に入れる。
  • USBケーブルを外し、すべてのアプリをターミネートする。
  • アプリをクリックして起動する。
  • iPhone6シミュレータでiCloudコンテナに書き込こんだファイルを読み込めるか、ボタン2を押し、iCloudコンテナから読み込む。
  • ファイル名を入れるボタンを押し、iCloudコンテナから正しくwebページが読み込まれているかアラートを表示する。OKが出力されれば正しい。

ここまでは意図通りに動いていることを確認できました。あとから、書き込むファイルを変えて動作確認ができれば、この評価は一通りOKということになります。また、Macから書き込んだものを読み込めれば、完全にOKとなります。しかし、現時点では、全く先が見えていません。

ここまでで引っかかった点は次のところです。

  • iPhoneシミュレータはダメ、実機でしか確認できないというブログ記事を見かけたのですが、実際はそうでなく、iCloudアクセスも問題なくできました。実機よりもシミュレータの方がビルド時間がはるかに短く使いやすいです。
  • Xcodeでシミュレータと実機を選択する箇所があることを知りました。Xcodeのビルド▶︎の右側で選択できます。
    Screenshot 2017-03-14 08.35.32
  • iTunes共有には、Info.plistにApplication supports iTunes file sharingを追加し、YESにします。現時点では、動作確認ができていません。いろいろ実装してみたのですが、ソースコードからは実装を外してあります。
    Screenshot 2017-03-14 08.37.54
  • Capabilitiesは、iCloud Documentsのみチェックが入っています。CloudKitもimportしていません。
    Screenshot 2017-03-14 08.40.48
  • URL読み込み、iCloudコンテナの読み書きを別クラスで共通メソッドとして切り出そうとしたのですが、うまくいきませんでした。実行スレッドが異なるため変数の引渡しがうまくいきませんでした。それでViewControllerに定義し直し、直接バッファに読み書きするようにしたら、変数の維持ができるようになりました。
  • これは、読み書きの出口ルーチンとして作り込んであります。しかし、ここでMesaAreaの変数を変更しても制御をiOSに戻した後、次にViewControllerで何かしようとしても、その変数の内容は維持されません。よって、この出口ルーチンで必要な処理をするという考えは実際的でありません。
  • App IDsの設定は次の通りです。
    Screenshot 2017-03-14 08.47.30