我正在研究蘋果今年發佈的新,我有一些疑問。我試圖遵循WWDC的「CloudKit新增功能」視頻,但部分代碼在Xcode中不再適用。如何使用CloudKit的CKShare創建共享?
我想要做的是:用戶將輸入他的姓名和電話,並點擊UIButton
後,將與特定的人分享。這裏是代碼:
class ViewController: UIViewController, UICloudSharingControllerDelegate {
@IBOutlet weak var nome: UITextField!
@IBOutlet weak var telefone: UITextField!
@IBOutlet weak var button: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func send(_ sender: AnyObject) {
print("Send button was clicked.\n")
let elder = CKRecord(recordType: "Elder")
elder["name"] = self.name.text as CKRecordValue?
elder["telephone"] = self.telephone.text as CKRecordValue?
let ckContainer = CKContainer.default()
let shareRecord = CKShare(rootRecord: elder)
shareRecord[CKShareTitleKey] = "Elder" as CKRecordValue?
let shareController = UICloudSharingController(share: shareRecord, container: ckContainer)
shareController.delegate = self
shareController.availablePermissions = [.allowReadOnly]
shareController.popoverPresentationController?.sourceView = self.button
self.present(shareController, animated: true)
}
func cloudSharingController(_ csc: UICloudSharingController, failedToSaveShareWithError error: Error) {
print("PROBLEM SAVING SHARE")
}
func cloudSharingControllerDidSaveShare(_ csc: UICloudSharingController) {
print("SHARE SAVED")
}
func itemTitle(for csc: UICloudSharingController) -> String? {
return "a" //don't know what this is for
}
}
即使CloudSharingController出現,我的應用仍然會打印「問題保存共享」。此外,CKRecord 老年人未顯示在CloudKit的儀表板中。
將print(「PROBLEM SAVING SHARE」)更新爲'print(「PROBLEM SAVING SHARE:\(error)」),這樣你就知道它失敗的原因。 – rmaddy
是的,在我發佈後,我做了正確的......但無論如何,錯誤是:'一個額外的份額正在被保存沒有它的rootRecord()' 。基本上我沒有創建根記錄,但我不明白,根記錄是'老',它就在它的正上方! –
我應該在嘗試創建共享之前保存記錄嗎? –