【发布时间】:2017-04-04 03:45:26
【问题描述】:
我是 Swift 和编程的新手。我正在使用Xcode 8.2.1 和Parse 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