4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CocoaAdvent Calendar 2017

Day 2

[macOS][iOS]iCloudドキュメント・ストレージに書き込む

Posted at

CloudKitは日記アプリのモデルを格納する場所には向いていないということで、iCloudドキュメントを試してみた。

iCloudコンテナ・ディレクトリにファイルを格納するのだが、このコンテナ、CloudKitで出てきたコンテナと同じ識別子で指す物のようだ。ただ、識別子は同じでも、領域は異なるのだと思う。

以下がファイルに書き込むコードだ。

let containerURL = FileManager.default.url(forUbiquityContainerIdentifier: "iCloud.com.example.KeepADiary")
let documentsURL = containerURL?.appendingPathComponent("Documents")
let fileURL = documentsURL?.appendingPathComponent("my.diary")
 
/* write */
let todayText = Date().description
do {
    try todayText.write(to: fileURL!, atomically: true, encoding: .utf8)
}
catch {
    print("write error")
}

このコードは、macOSとiOSで動作するが、macOSで実行した際のfileURLの内容は以下のとおり。

file:///Users/yukio/Library/Mobile%20Documents/iCloud~com~example~KeepADiary/Documents/my.diary

このディレクトリでファイルを確認すると以下のとおり。

$ pwd
/Users/yukio/Library/Mobile Documents/iCloud~com~example~KeepADiary/Documents
$ ls
my 3.diary	my 4.diary	my 5.diary	my 6.diary	my 7.diary

ファイル書き込み時に、このディレクトリのファイルを確認したところ、my.diary という名前のファイルが作成されるが、しばらくすると、my 8.diary という風にファイル名が変更される。何故だ!ファイルの上書き防止機能?版管理機能?

ソースコード
GitHubからどうぞ。

https://github.com/murakami/KeepADiary - GitHub

関連情報
日記アプリのデータ管理

Cocoa勉強会 BUKURO.swift (connpass)

Cocoa勉強会 BUKURO.swift (ATND)

Cocoa勉強会 BUKURO.swift (Peatix)

【Cocoa練習帳】
http://www.bitz.co.jp/weblog/

http://ameblo.jp/bitz/(ミラー・サイト)

Qiita

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?