cloudkit как писать в публичную базу данных

Я использую cloudkit для чтения и записи в общедоступной базе данных - в моем приложении пользователь должен иметь возможность загружать файлы и записывать записи в базу данных, а другие пользователи - для чтения. Я использую cloudkit, однако, насколько мне известно, для записи в общедоступную базу данных должен войти в систему с учетной записью icloud, однако Apple не позволяет это в производстве, так как решить эту проблему - как я могу дать пользователям право писать в БД

  let Container = CKContainer.default()
    let database = Container.publicCloudDatabase
    let predicate = NSPredicate(value: true)
    let query = CKQuery(recordType: "NewCode", predicate: predicate) //Photos is table name in cloudkit server
    //-------Fetch the data---------------------

    database.perform(query, inZoneWith: nil,
                             completionHandler: ({results, error in

        DispatchQueue.main.async() {   //Disp

            if (error != nil) {
                DispatchQueue.main.async() {

                }
            }

            else {  //a
                if results!.count > 0 {
                    print("count = \(results!.count)")
                     record = results![0]
                    currentRecord = record



                    newcode = currentRecord?.object(forKey: "Code") as! String
                     newcodevalue =  Int(newcode)!
                     newcodevalue = newcodevalue + 10

                        print("new code  is = \(newcodevalue)")
                    myCodeStrinValue = String(newcodevalue)
                    print("new code  string = \(newcodevalue)")
                    record?.setObject(myCodeStrinValue as CKRecordValue?,forKey: "Code")
                    database.save(record!, completionHandler:  //save
                        ({returnRecord, error in
                            if let err = error {
                                DispatchQueue.main.async() {

                                }
                            } else {
                                DispatchQueue.main.async() {
                                    print("NewCode Table updated successfully")
                                    // passing the code value we fetched above to the second viewcontroller "Uploadphotoviewcontroller" to be saved with the uploaded photo when saved button on the second controller clicked. remember you have to set an ID for the second view controller "Uploadphotoviewcontroller" to be used here when passing the value to it (set ID in the attributes right panel


                                    // Instantiate SecondViewController
                                    let UploadPhotoviewcontroller = self.storyboard?.instantiateViewController(withIdentifier:
                                        "UploadPhotoviewcontroller") as! UploadPhotoviewcontroller

                                    // Set the code value got from the DB above to the variable "myCodeValue" (this variable declared in the second view controller that will receive the value passed from here "Uploadphotoviewcontroller"

                                    // add alpha numeric value to the code to make it more complicated for secuirty reasons

                                    let CodeLetter = self.randomAlphaNumericString (length: 3)

                                    UploadPhotoviewcontroller.myCodeValue = CodeLetter + myCodeStrinValue
                                    UploadPhotoviewcontroller.codeOnly = myCodeStrinValue

                                    // Take user to SecondViewController and accordingly remember not create graphical sague way link in the main storyboard to avoid reload of the view controller - remember to set ID attribute to  UploadPhotoviewcontroller to use it here
                                    self.navigationController?.pushViewController(UploadPhotoviewcontroller, animated: true)


                                }
                            }
                        }))   //save

                }
                else { //G
                    DispatchQueue.main.async()
                        {

                    }

                 }  //G

        } //a



      }  //Disp

    }))

0 ответов

Другие вопросы по тегам