トップ «前の日記(2017-11-18) 最新 次の日記(2017-11-23)» 編集

Cocoa練習帳

iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど

2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|

2017-11-19 [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練習帳】

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

トップ «前の日記(2017-11-18) 最新 次の日記(2017-11-23)» 編集