Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
4
Help us understand the problem. What are the problem?