CubeStuffs / CubeTime

Simple, modern speedcubing timer with many utilities, built with SwiftUI & UIKit.
https://cubetime.app
GNU General Public License v3.0
90 stars 4 forks source link

☁️ CloudKit integration #131

Closed heytherewill closed 1 year ago

heytherewill commented 1 year ago

This adds CloudKit integration to the app so we can use the share solve times across multiple devices. Yay!

pdtxie commented 1 year ago

I've created the CloudKit container in the portal, but I've run into some issues with the datamodel. It seems we need huge adjustments to our datamodel to support CloudKit. @xbjfk we'll need to have a look at updating our database in conformance to CloudKit's NSPersistentCloudKitContainer.

Errors:

CloudKit integration does not support ordered relationships. The following relationships are marked ordered:
CompSimSession: solvegroups
CompSimSolveGroup: solves

CloudKit integration requires that all attributes be optional, or have a default value set. The following attributes are marked non-optional but do not have a default value:
CompSimSession: name
CompSimSolve: date
CompSimSolve: scramble
MultiphaseSession: name
MultiphaseSolve: date
MultiphaseSolve: phases
MultiphaseSolve: scramble
Sessions: name
Solves: date
Solves: scramble

CloudKit integration requires that all relationships be optional, the following are not:
CompSimSession: solvegroups
CompSimSession: solves
CompSimSolve: session
CompSimSolve: solvegroup
CompSimSolveGroup: session
CompSimSolveGroup: solves
MultiphaseSession: solves
MultiphaseSolve: session
Sessions: solves
Solves: session