日記アプリだが、投稿された写真をどこに保存するかが課題だ。CloudKitのDatabase storageの無料枠は100MB。だが、用途が異なり利用できないと決めつけていたAsset storegeが利用できることに気がついた。
アセットの利用は簡単だ。
database.fetch(withRecordID: diaryRecordID, completionHandler: { (diaryRecord, error) in
print(#function)
if error != nil {
print(error)
}
else {
let asset = CKAsset(fileURL: fileUrl)
diaryRecord!["photo"] = asset
database.save(diaryRecord!, completionHandler: { (record, error) in
if error != nil {
print(error)
}
else {
print(record)
}
})
}
})
Assetフィールドにファイルを設定する。
レコードを保存するとファイルがアップロードされる。
Assetを操作するとダウンロードされる。
これで写真の投稿はなんとかなるのが分かったが、新たな課題が。無料枠を超えた場合、課金されるが、どうやら請求は開発者宛らしい。定額課金を考えないといけなさそうだが、利用制限の機能の実装が必要そうだ。iCloudの利用も検討することにする。
ソースコード
GitHubからどうぞ。
https://github.com/murakami/KeepADiary - GitHub
関連情報
CloudKitを使った日記アプリで写真をどう扱うか
Cocoa勉強会 BUKURO.swift (connpass)
Cocoa勉強会 BUKURO.swift (ATND)
Cocoa勉強会 BUKURO.swift (Peatix)
【Cocoa練習帳】
http://www.bitz.co.jp/weblog/
http://ameblo.jp/bitz/(ミラー・サイト)
Qiita