【问题标题】:Using parse API in swift 3, only some query results are saving?在swift 3中使用parse API,只保存一些查询结果?
【发布时间】:2017-04-04 03:45:26
【问题描述】:

我是 Swift 和编程的新手。我正在使用Xcode 8.2.1Parse AWS(免费)服务器。

我使用以下语法将特定object IDs 的所有query 结果保存到新parse class 的一行中。

大部分query 结果正在保存(例如primarycityquery、secondcityquery、citydetailsquery),但不是全部(例如multicityquery)。

我在另一个 UIViewController 中使用了完全相同的语法(不过,只有 3 个 queries)并且它工作正常。

这里的问题是我运行了太多查询吗?这一切都在viewDidLoad 内。请告知是否有更好的方法来做到这一点。

谢谢!

    let primaryCityQuery = PFQuery(className: "primaryCityDetails")

    primaryCityQuery.whereKey("objectId", equalTo: passedPrimaryCityDetailsObjectIdString)

    primaryCityQuery.findObjectsInBackground(block: { (objects, error) in
        if let objects = objects {


            for primaryCityQuery in objects {

                if let primaryCity = primaryCityQuery["primaryCity"] as? String {

                    self.primaryCity = String(primaryCity)

                    print(self.primaryCity) }

                if let primaryCountry = primaryCityQuery["primaryCountry"] as? String {

                    self.primaryCountry = String(primaryCountry)

                    print(self.primaryCountry) }

                if let primaryState = primaryCityQuery["primaryState"] as? String {

                    self.primaryState = String(primaryState)

                    print(self.primaryState) }

                if let numberDays = primaryCityQuery["numberDays"] as? String {

                    self.numberDays = String(numberDays)

                    print(self.numberDays) }

                if let numberNights = primaryCityQuery["numberNights"] as? String {

                    self.numberNights = String(numberNights)

                    print(self.numberNights) }



            } } else {

            print(error!)

        } })

    //second city info 

    let secondCityQuery = PFQuery(className: "secondCityDetails")

    secondCityQuery.whereKey("objectId", equalTo: passedSecondCityDetailsObjectIDString)

    secondCityQuery.findObjectsInBackground(block: { (objects, error) in

        if let objects = objects {

            for secondCityQuery in objects {

                if let secondCity = secondCityQuery["secondCity"] as? String {

                    self.secondCity = String(secondCity)

                    print(self.secondCity) }

                if let secondCountry = secondCityQuery["secondCountry"] as? String {

                    self.secondCountry = String(secondCountry)

                    print(self.secondCountry) }

                if let secondState = secondCityQuery["secondState"] as? String {

                    self.secondState = String(secondState)

                    print(self.secondState) }


            } } else {

                    print(error!)

            } })

           //


        let multiCityQuery = PFQuery(className: "multiCityDetails")

                    multiCityQuery.whereKey("objectId", equalTo: passedCityBeforeDetailsObjectIdString)

                    multiCityQuery.findObjectsInBackground(block: { (objects, error) in

                        if let objects = objects {

                            for multiCityQuery in objects {

                                if let beforeCity = multiCityQuery["beforeCity"] as? String {

                                    self.beforeCity = String(beforeCity)

                                    print(self.beforeCity) }

                                if let beforeCountry = multiCityQuery["beforeCountry"] as? String {

                                    self.beforeCountry = String(beforeCountry)

                                    print(self.beforeCountry) }


                                if let beforeState = multiCityQuery["beforeState"] as? String {

                                    self.beforeState = String(beforeState)

                                    print(self.beforeState) }

                            } } else {

                            print(error!)

                        } })


    let inputtedCityDetailsQuery = PFQuery(className: "primaryTripDetails")

        inputtedCityDetailsQuery.whereKey("objectId", equalTo: primTripDetails)

        inputtedCityDetailsQuery.findObjectsInBackground(block: { (objects, error) in

            if let objects = objects {

                for inputtedCityDetailsQuery in objects {

                    if let primaryTripWhen = inputtedCityDetailsQuery["primaryTripWhen"] as? String {

                        self.primaryTripWhen = String(primaryTripWhen)

                        print(self.primaryTripWhen) }

                    if let primaryTripWhatSort = inputtedCityDetailsQuery["primaryTripWhatSort"] as? String {

                        self.primaryTripWhatSort = String(primaryTripWhatSort)

                        print(self.primaryTripWhatSort) }

                    if let primaryTripWhoWith = inputtedCityDetailsQuery["primaryTripWhoWith"] as? String {

                        self.primaryTripWhoWith = String(primaryTripWhoWith)

                        print(self.primaryTripWhoWith) }

                    if let primaryTripBudget = inputtedCityDetailsQuery["primaryTripBudget"] as? String {

                        self.primaryTripBudget = String(primaryTripBudget)

                        print(self.primaryTripBudget)



                let fullCityInput = PFObject(className: "fullCityInputRow")

                    fullCityInput["primaryCity"] = self.primaryCity
                    fullCityInput["primaryCountry"] = self.primaryCountry
                    fullCityInput["primaryState"] = self.primaryState
                    fullCityInput["secondCity"] = self.secondCity
                    fullCityInput["secondCountry"] = self.secondCountry
                    fullCityInput["secondState"] = self.secondState

                    fullCityInput["beforeCity"] = self.beforeCity
                    fullCityInput["beforeCountry"] = self.beforeCountry
                    fullCityInput["beforeState"] = self.beforeState
                    fullCityInput["primaryTripWhoWith"] = self.primaryTripWhoWith
                    fullCityInput["primaryTripBudget"] = self.primaryTripBudget
                    fullCityInput["primaryTripWhen"] = self.primaryTripWhen
                    fullCityInput["primaryTripWhatSort"] = self.primaryTripWhatSort

                    fullCityInput["numberDays"] = self.numberDays
                    fullCityInput["numberNights"] = self.numberNights

                fullCityInput.saveInBackground(block: { (success, error) in

                            if success {

                                print("full city input row saved")

                            } else {

                                if error != nil {

                                    print (error!)
                                } else {

                                    print("blanks")
                                }
                            }
                        })

                    }
                }

            } else {

            print(error!)

        } })

【问题讨论】:

  • 欢迎来到 SO user7811828。寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建最小、完整和可验证的示例。 stackoverflow.com/help/mcve
  • 简而言之,描述您在调试您提供的示例时遇到的错误以及遇到的问题。我确信没有人可以访问您对 Parse 和 Amazon 的自定义设置。这会停止在神奇的数字 3 上吗?或者它是否适用于其他一些查询限制等?

标签: ios swift amazon-ec2 parse-server


【解决方案1】:

谢谢。幻数似乎是 3。我已将未保存在此视图控制器中的值保存到另一个,然后在此处的 3 个查询之一中查询它们。我所有的输入现在都成功地保存在另一个类的一行中。

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多