Ich versuche, mehrere Werte in CloudKit (Name, Benutzername, Punkte) zu speichern. Allerdings, wenn ich sie retten, sie sparen separat in drei verschiedenen Reihen, etwa so:Hinzufügen von mehreren Feldern zu derselben RecordName-Zeile in CloudKit
ich den Namen, Benutzernamen kombinieren möchten, und Punkte Felder in einer Reihe, so kann ich sie zusammen laden.
Hier ist mein Sparcode:
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")
}
}
Kann jemand bitte zeigen, wie diese Datensätze speichern zusammen statt getrennt?
Zusammen mit, dass ich zur Zeit separat laden sie, wenn sie zusammen sein sollte ... Laden Code:
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()
}
}
}
ich meine Daten zur Gruppe der Speicherung und Ladevorgang beide suchen in zusammen.
P.S. Wenn es jemandem hilft, es besser zu verstehen, versuche ich eine öffentliche Bestenliste zu erstellen, die alle Namen oder Benutzernamen der Benutzer und ihre Punkte enthält.