나는 애플이 올해에 발표 한 새로운 을 연구 중이며, 그것에 대해 몇 가지 질문이있다. 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의 대시 보드에 표시되지 않습니다.
'인쇄 ("문제 저장 공유 : \ (오류)") '를 인쇄하여 ("문제가있는 공유를 저장합니다.")'그것이 무엇이 실패했는지 알 수 있습니다. – rmaddy
네, 여기에 게시 한 직후에 오류가 발생했습니다 :'추가 된 공유가 rootRecord ()' . 근본적으로 루트 레코드를 만들지는 못하지만, 루트 레코드는'elder'이고 그 바로 위에 있습니다! –
공유를 만들기 전에 레코드를 저장해야합니까? –