CloudKit(名前、ユーザー名、ポイント)に複数の値を保存しようとしています。しかし、私はそれらを保存するとき、彼らはのようなので、異なる3行に分けて保存します。CloudKitの同じrecordName行に複数のフィールドを追加する
私は名、ユーザ名を組み合わせたい、と私はそれらを一緒にロードすることができるように1行にフィールドを指します。ここで
は私節約コードです:
func saveToCloud(){
let newName = CKRecord(recordType: "LeaderboardInfo")
newName.setValue(firstName, forKey: "Name")
database.save(newName) { (record, error) in
guard record != nil else { return }
print("saved record")
}
let newUsername = CKRecord(recordType: "LeaderboardInfo")
newUsername.setValue(username, forKey: "Username")
database.save(newUsername) { (record, error) in
guard record != nil else { return }
print("saved record")
}
let pointsCount = CKRecord(recordType: "LeaderboardInfo")
pointsEarned = Int(arc4random_uniform(UInt32(50)))
pointsCount.setValue(pointsEarned, forKey: "Points")
database.save(pointsCount) { (record, error) in
guard record != nil else { return }
print("saved record")
}
}
誰かが一緒の代わりに、個別にこれらのレコードを保存する方法を示していただけますか?それとともに
それは一緒にする必要がありますとき、私は現在、それらを個別にロードする... ロードコード:
func queryDatabase() {
// Name
let query = CKQuery(recordType: "LeaderboardInfo", predicate: NSPredicate(value: true))
database.perform(query, inZoneWith: nil) { (records, _) in
guard let records = records else { return }
let sortedRecords = records.sorted(by: { $0.creationDate! > $1.creationDate! })
self.names = sortedRecords
DispatchQueue.main.async {
// self.tableView.refreshControl?.endRefreshing()
self.tableView.reloadData()
}
}
// Username
let query2 = CKQuery(recordType: "LeaderboardInfo", predicate: NSPredicate(value: true))
database.perform(query2, inZoneWith: nil) { (records, _) in
guard let records = records else { return }
let sortedRecords = records.sorted(by: { $0.creationDate! > $1.creationDate! })
self.usernames = sortedRecords
DispatchQueue.main.async {
// self.tableView.refreshControl?.endRefreshing()
self.tableView.reloadData()
}
}
// Points
let query3 = CKQuery(recordType: "LeaderboardInfo", predicate: NSPredicate(value: true))
database.perform(query3, inZoneWith: nil) { (records, _) in
guard let records = records else { return }
let sortedRecords = records.sorted(by: { $0.creationDate! > $1.creationDate! })
self.points = sortedRecords
DispatchQueue.main.async {
// self.tableView.refreshControl?.endRefreshing()
self.tableView.reloadData()
}
}
}
私は両方の保存と読み込みのプロセスで一緒にグループに私のデータを探しています。
P.S.それが誰かの理解を助けるのであれば、私はすべてのユーザーの名前やユーザー名、そしてそのポイントを含む公開リーダーボードを作成しようとしています。