Swift CKS订阅和生产容器
您好,我正在尝试创建CKSubscription,我使用以下代码:Swift CKS订阅和生产容器,swift,icloud,Swift,Icloud,您好,我正在尝试创建CKSubscription,我使用以下代码: func setupCKSubscriptions(){ if NSUserDefaults.standardUserDefaults().boolForKey("sub") == false{ let subscription = CKSubscription(recordType: "Quadri", predicate: NSPredicate(value: true), options: .Fires
func setupCKSubscriptions(){
if NSUserDefaults.standardUserDefaults().boolForKey("sub") == false{
let subscription = CKSubscription(recordType: "Quadri", predicate: NSPredicate(value: true), options: .FiresOnRecordCreation)
let notificationInfo = CKNotificationInfo()
notificationInfo.alertLocalizationKey = NSLocalizedString("NEW_Q", comment: "")
notificationInfo.shouldBadge = true
subscription.notificationInfo = notificationInfo
CKContainer.defaultContainer().publicCloudDatabase.saveSubscription(subscription) { (subscription, errore) -> Void in
if errore == nil{
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "sub")
NSUserDefaults.standardUserDefaults().synchronize()
let alert = UIAlertController(title: "Ok", message: "", preferredStyle: .Alert)
self.presentViewController(alert, animated: true, completion: nil)
}else{
print(errore?.localizedDescription)
let alert = UIAlertController(title: "Errore", message: errore?.localizedDescription, preferredStyle: .Alert)
self.presentViewController(alert, animated: true, completion: nil)
}
}
}else{
let alert = UIAlertController(title: "Errore", message: "", preferredStyle: .Alert)
self.presentViewController(alert, animated: true, completion: nil)
}
}
问题是,此代码仅在模拟器上工作,当我在真实设备上运行应用程序时,会出现以下错误:
正在尝试在生产容器中创建订阅
如何解决这个问题?我遇到了完全相同的问题,解决方法很简单,但不是很直观。 在开发模式下,让应用程序创建您需要的订阅。将数据库部署到生产环境。 在生产环境中测试您的应用程序,您将看到它现在可以创建您已创建的订阅。
希望它能起作用来补充这个答案(因为我一开始不太清楚):当您在开发过程中创建订阅时,它将记录在CloudKit仪表板上。创建订阅后,它将显示在仪表板>容器>开发>架构>订阅类型下。如回答中所述,下一步是将架构部署到生产环境中。是的。由于某些原因,必须在开发过程中创建订阅,然后部署到生产环境中。