Ios 保存、更新iCloud或对iCloud执行任何操作都不适用于临时或应用商店配置文件
在我的应用程序中,以发布模式(使用临时应用商店配置文件构建)将CKRecords保存或更新到iCloud不起作用 在capabilities中创建了默认容器,并找到下面附带的屏幕截图 以上代码在调试模式下工作。当我生成带有临时配置文件的构建时,它不起作用 已将应用程序提交到appstore并已尝试,但仍无法运行。Ios 保存、更新iCloud或对iCloud执行任何操作都不适用于临时或应用商店配置文件,ios,swift,icloud,cloudkit,Ios,Swift,Icloud,Cloudkit,在我的应用程序中,以发布模式(使用临时应用商店配置文件构建)将CKRecords保存或更新到iCloud不起作用 在capabilities中创建了默认容器,并找到下面附带的屏幕截图 以上代码在调试模式下工作。当我生成带有临时配置文件的构建时,它不起作用 已将应用程序提交到appstore并已尝试,但仍无法运行。 请建议,好的,所以我现在重复了两次这个错误——对我来说,这是因为我在CKRecord中添加了新字段,但没有将Development CloudKit数据库部署到生产环境中 原因是,当
请建议,好的,所以我现在重复了两次这个错误——对我来说,这是因为我在CKRecord中添加了新字段,但没有将Development CloudKit数据库部署到生产环境中 原因是,当有新字段要记录时,开发数据库会自动更新,但在进行显式部署之前,不会进入生产。因此,在Prod环境中,由于未知字段,对数据库的写入将被拒绝
要修复它,请转到CloudKit Dashboard,确保它位于开发环境中,然后单击Deployment,您应该会看到要部署的新字段。部署完成后,它应该可以立即工作。您找到解决方案了吗?我也面临同样的问题
let container = CKContainer.default
var privateDatabase: CKDatabase?
var currentRecord: CKRecord?
var photoURL: URL?
var recordZone: CKRecordZone?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
privateDatabase = container().privateCloudDatabase
recordZone = CKRecordZone(zoneName: "HouseZone")
privateDatabase?.save(recordZone!,
completionHandler: {(recordzone, error) in
if (error != nil) {
self.notifyUser("Record Zone Error",
message: "Failed to create custom record zone.")
} else {
print("Saved record zone")
}
})
}
@IBAction func saveAction(_ sender: Any) {
if let img = selImageView.image{
photoURL = self.saveImageToFile(img)
}
let asset = CKAsset(fileURL: photoURL!)
let myRecord = CKRecord(recordType: "Houses",
zoneID: (recordZone?.zoneID)!)
myRecord.setObject(addressTextField.text as CKRecordValue?,
forKey: "address")
myRecord.setObject(descriptionTextView.text as CKRecordValue?,
forKey: "comment")
myRecord.setObject(asset, forKey: "photo")
let modifyRecordsOperation = CKModifyRecordsOperation(
recordsToSave: [myRecord],
recordIDsToDelete: nil)
if #available(iOS 10.0, *) {
modifyRecordsOperation.timeoutIntervalForRequest = 10
} else {
// Fallback on earlier versions
// modifyRecordsOperation.timeoutIntervalForRequest = 10
}
modifyRecordsOperation.modifyRecordsCompletionBlock =
{ records, recordIDs, error in
if let err = error {
self.notifyUser("Save Error", message:
err.localizedDescription)
} else {
DispatchQueue.main.async {
self.notifyUser("Success",
message: "Record saved successfully")
}
self.currentRecord = myRecord
}
}
privateDatabase?.add(modifyRecordsOperation)
}