サーチ…
備考
サポートされるタイプ
- NSData
- NSDate(日付)
- NSNumber(Int / Double)
- NSString(String)
- NSArray(配列)
- CLLocation
- CKReference
- CKAsset
CloudKitで使用するためのアプリの登録
必要なのは、アプリケーションがiCloudにアクセスし、CloudKitを使用してレコードを書き込むことができるように、エンタイトルメントファイルを取得することです。
アプリケーションからiCloudへのアクセスを許可する手順は次のとおりです。
1-プロジェクトナビゲータでプロジェクトを選択し、[全般]タブを開きます。
2-アイデンティティセクションで、開発者のApple IDをチームのドロップダウンメニューに設定します。 (利用できない場合は、Xcodeメニュー - >環境設定 - >アカウントに追加してください。
3-プロジェクトのプロパティのCapabilitiesタブに移動し、iCloudをオンにします。次に、「Key-Value Storage」と「CloudKit」を選択します。
4-次の項目がチェックされていることを確認します。
すべての項目がチェックされている場合、あなたのアプリはCloudKitを使用する準備ができています。
CloudKitダッシュボードの使用
CloudKit関連のコードを使用して作成されたすべてのレコードは、CloudKit Dashboardでプレビュー、編集、削除することもできます。 CloudKit Dashboardにアクセスするには、ここをクリックしてください 。
ダッシュボードにはいくつかの部分があります。
- レコードタイプ(後で説明する)
- セキュリティロール(データベースをパブリックまたはプライベートとして設定できる場所)
- サブスクリプションタイプ( Apple Push Notification(APN)に登録してレコードが変更されたときに通知することができる)
レコードタイプ
ここでは、アプリケーションのすべての既存のレコードタイプのリストを取得します。最初にCloudKit Dashboardを開いたときに、そこにはUsersというレコードタイプがあります。これを使用するか、削除して独自のものを使用することができます。
このページでは、データを手動で入力することができます。もちろん、ほとんどの場合、iOS SDKはダッシュボードよりも優れた処理を行うことができるため、これは無意味ですが、必要に応じて機能もあります。このページのほとんどの用途は、プレビュータイプです。
CloudKitにデータを保存する
CloudKitに日付を保存するには、以下を行う必要があります:
-
CKRecordID
(独自のレコードのキー) -
CKRecord
(データを含む)
レコードキーを作る
新しいレコード識別子がすべて一意であることを保証するために、現在のタイムスタンプを使用します。私たちが使用してタイムスタンプを取得NSDate
のメソッドtimeIntervalSinceReferenceDate()
これは###。###(#は数字)の形式であり、整数部分を使用します。これを行うために、次の文字列を分割します。
迅速
let timestamp = String(format: "%f", NSDate.timeIntervalSinceReferenceDate())
let timestampParts = timestamp.componentsSeparatedByString(".")
let recordID = CKRecordID(recordName: timestampParts[0])
記録を作る
レコードを作成するには、レコードタイプ(CloudKitダッシュボードの使用で説明)をユーザーとして指定し、今作成したIDとデータを指定する必要があります。ここでは、サンプルテキスト、画像、現在の日付をレコードに追加します。
迅速
let record = CKRecord(recordType: "Users", recordID: recordID)
record.setObject("Some Text", forKey: "text")
record.setObject(CKAsset(fileURL: someValidImageURL), forKey: "image")
record.setObject(NSDate(), forKey: "date")
目標-C
CKRecord *record = [[CKRecord alloc] initWithRecordType: "Users" recordID: recordID];
[record setObject: "Some Text" forKey: "text"];
[record setObject: [CKAsset assetWithFileURL: someValidImageURL] forKey: "image"];
[record setObject: [[NSDate alloc] init] forKey: "date"];
注意
ここでは、備考で述べたように画像フォーマットはCloudKitで直接サポートされていないため、
UIImage
をレコードに直接追加しなかったので、UIImage
をCKAsset
変換しCKAsset
。
コンテナへのアクセス
迅速
let container = CKContainer.defaultContainer()
let database = container.privateCloudDatabase // or container.publicCloudDatabase
CloudKitデータベースにレコードを保存する
迅速
database.saveRecord(record, completionHandler: { (_, error) -> Void in
print(error ?? "")
})