iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど
Hackdrライダーにも悩みがある。
燃料計がない単車に乗っているのだが、給油時にトリップメータの値(走行距離)と消費量(給油量)から燃費を計算しないといけない。先ずは、フューエルタンクの容量を把握すること。そして、トリップメータの値から残量を予測し、給油のタイミングを判断することになる。
メーカーから、これの為のアプリが提供されているのだが、WebViewを使った手抜きで、使いづらい。なので、自作することにした。
記録データはサーバ上に置きたいが、自分で立てるのは避けたい。調べたら、iCloud関連が良さそうだ。
利用できるストレージの種類は以下のとおり。
CloudKitを利用することにする。
XcodeのCapabilitiesでCloudKitを有効に設定。
CloudKit Dashboardで形式を定義する。
仮の追加コードを用意して見た。
@IBAction func add(sender: UIButton) {
let privateDatabase : CKDatabase = CKContainer.default().privateCloudDatabase
let refuelRecord: CKRecord = CKRecord(recordType: "Refuels")
refuelRecord["Identifier"] = NSUUID().uuidString as CKRecordValue?
privateDatabase.save(refuelRecord) {
record, error in
if error == nil {
print("Saved : \(record)")
} else {
print("Error : \(error)")
}
}
}
追加した内容を確認するコードだ。
@IBAction func search(sender: UIButton) {
let privateDatabase : CKDatabase = CKContainer.default().privateCloudDatabase
let predicate = NSPredicate(format: "Identifier != %@", "nil")
let query : CKQuery = CKQuery(recordType: "Refuels", predicate: predicate)
privateDatabase.perform(query, inZoneWith: nil, completionHandler: {
results, error in
print("\(results)")
})
}