मेरे पास कस्टम Item प्रकार की एक सरणी है। इस मॉडल में CLLocation प्रकार की एक स्थान और गंतव्य संपत्ति है

इस आइटम को लाने के बाद मैं गंतव्य और स्थान के लिए CLPlacemark लाने के लिए Geocoder का उपयोग करके दो अनुरोध करना चाहता हूं। हालाँकि यह अजीब है कि मैं या तो स्थान के लिए या गंतव्य के लिए कॉल कर सकता हूँ। अगर मैं दोनों अनुरोध करता हूं, तो केवल पहला ही आग लगती है। सेकंड आग नहीं करता है। जैसा कि आप पहली कॉल के बाद देख सकते हैं कि मैं पूरे मॉडल को सरणी में नहीं बदल रहा हूं बल्कि सिर्फ एक संपत्ति बदल रहा हूं, इसलिए मुझे नहीं लगता कि यह समस्या है।

for (i, element) in self.categories[index].items.enumerated() {
    // either this 
    self.geocoder.reverseGeocodeLocation(element.location, completionHandler: { (placemarks, error) in
        if let error = error {
            self.error = error.localizedDescription
        } else {
            self.categories[index].items[i].locationPlacemark = placemarks?.first
        }
    })

    // or this 
    self.geocoder.reverseGeocodeLocation(element.destination, completionHandler: { (placemarks, error) in
        if let error = error {
            self.error = error.localizedDescription
        } else {
            self.categories[index].items[i].destinationPlacemark = placemarks?.first
        }
    })
}
1
Rexhin Hoxha 15 जून 2020, 03:23

1 उत्तर

सबसे बढ़िया उत्तर

आप समानांतर रिवर्स जियोकोडिंग अनुरोध सबमिट नहीं कर सकते -

दस्तावेज़ीकरण से

रिवर्स-जियोकोडिंग अनुरोध शुरू करने के बाद, एक और रिवर्स- या फॉरवर्ड-जियोकोडिंग अनुरोध शुरू करने का प्रयास न करें। प्रत्येक ऐप के लिए जियोकोडिंग अनुरोध दर-सीमित हैं, इसलिए कम समय में बहुत अधिक अनुरोध करने से कुछ अनुरोध विफल हो सकते हैं। जब अधिकतम दर पार हो जाती है, तो जियोकोडर आपके कंप्लीशन हैंडलर को CLError.Code.network मान के साथ एक त्रुटि ऑब्जेक्ट पास करता है।

एक Item के लिए आप पहले के कंप्लीशन हैंडलर में दूसरा जियोकोडिंग अनुरोध शुरू करके समस्या को बचा सकते हैं, लेकिन यह कई आइटम के लिए काम नहीं करेगा क्योंकि आप समानांतर में कई "पहले" अनुरोध सबमिट करेंगे।

आपको अधिक परिष्कृत दृष्टिकोण अपनाने की आवश्यकता होगी, जैसे कि सीरियल ऑपरेशन कतार में संचालन जमा करना।

1
Paulw11 15 जून 2020, 00:46