iOS

iOS:iCloud ContainerのRead/Write

錯誤によりiCloud ContainerへのファイルのRead/WriteがOKになったと勘違いしてしまいました。

まず、iOSとmacOSで使えるソースコードは次の通りです。基本的にiOSのコードがmacOSにもそのまま使えます。注意点は、NSFileCoordinatorを使って排他制御をしないと、iOS同士も、iOSとmacOS間でも、iCloud Containerを使ったファイル共有ができないということです。

Write

書き込みは比較的に単純です。

let iCloudContainerID3:String   = iCloudContainerIDを定義する。

let wBuffer:String  = 書き込むデータ
self.CallWrite2iCloudContainer(wBuffer, pName: “MesaMeter.txt”,pID:self.C.iCloudContainerID3)

Screenshot 2017-03-22 22.30.12

Read

読み込みは、アプリ個々に読み込んだあとの処理が必要になります。このサンプルアプリでは、iOSとmacOSで読み込みエリアを変えることにより後処理を実現しています。

self.CallReadiCloudContainer(“Meter.txt”, pID:self.C.iCloudContainerID3, pOS:”iOS”)

Screenshot 2017-03-22 22.47.55

迷走

今回、開発中のアプリにチョコチョコット付け加えて評価しました。基本動作をきっちり確認せず、iPhone6シミュレータとiPhone5実機でRead/Writeができ、これで良しとしてしまったところに大きな勘違いがありました。おかげでとても混乱してしまいました。自業自得。

もしかすると、本当にうまく狙い通り動いたこともあったかもしれません。しかし、実際はそうではありません。コンパイルしているXcodeのiOSアプリはiPhone6シミュレータとiPhone5実機の双方につながり、一方が他方の結果を引き継ぐようなことが起きたのです。

おお、やった、と喜んだところで、空喜びだったのです。

不思議なのは、USBケーブルからiPhone5実機を取り外したあと、あたかもうまく動いていたことです。よくよく考えれば、そのときまでにiPhone5実機で使うファイルがiCloud Containerに書き込まれていたのです。情けない。

Objective-CでDropboxファイルを読み書きするアプリを作ったとき、それだけで何ヶ月かむなしく過ぎました。今回も同じような流れでした。早く立ち直れて本当にうれしいです。

 

Categories: iOS, Swift, 技術

Tagged as: ,