Swift

Swift:iCloudコンテナ補足

iCloud Containersにアクセスするソースコードのサンプルはアップした通りですが、これは補足のメモです。

そもそも水道メータのアプリを開発したのですが、登録で躓いています。それで、iCloud Containersへのアクセスを行うサンプルコードを眺めていたら、いくつか疑問がわき、コード全体を見直しました。

冗長度を少なくし、IDやファイル名、アクセスメソッドを固定的にしました。DispatchQueueを使い、非同期処理を行う方が良いらしいので、最終的にこれに一本化しました。当然、そうすると、非同期処理の中でstoryboardの変更ができなくなるので、ファイルの書き出し・読み出しとその内容の表示を分離しなければならず、面倒なことになります。

エラーの変数を用意し、これで対応しようとしていたのですが、シンプルでないのでこれはやめました。読み込みバッファが有効か無効かでエラー判定をするようにしました。書き込みについては、そのあとの読み込みでエラー判定ができるはずなので、エラーの判別をしないことにしました。

サンプルコードの方は、これでほぼ完成したのではないかと考えています。アプリ版は、今からDispatchQueueに一本化し、サンプルコードと同じメソッドを利用して書き換えるつもりです。

ひとつだけこれはどうなのというのがあります。どうなのでしょう。上が現在のもの、下は以前のもので、どちらも動いています・・・

  • NSFileCoordinator().coordinate(readingItemAt: wFileURL!, options: .withoutChanges, error: nil, byAccessor:{ (newURL) in
    do {
  • NSFileCoordinator().coordinate(writingItemAt: wFileURL!, options: .forReplacing, error: nil) { (newURL) -> Void in
    do {

追記: 2017.7.23

  • NSFileCoordinatorは次のように記述しました。newURLを使ってURLを指示します

Screenshot 2017-07-23 22.35.23

Categories: Swift, 技術