मुझे GMSPlacesClient findAutocompletePredictionsFromQuery: के कॉलबैक द्वारा दिए गए परिणामों का विश्लेषण करने में समस्या हो रही है, जो एक GMSAutocompletePrediction सरणी है।

ऐप let searchResultsWayPoints = finalResults.map को क्रैश हो जाएगा, बताते हुए

Precondition failed: NSArray element failed to match the Swift Array Element type
Expected GMSAutocompletePrediction but found GMSAutocompletePrediction
func getGoogleWayPoint(text: String) -> Promise<[GoogleWayPoint]> {
        return Promise<[GoogleWayPoint]> { resolver in
            if text.isEmpty {
                resolver.fulfill([])
                return
            }
            placesClient.findAutocompletePredictions(fromQuery: text, filter: filter, sessionToken: sessionToken) { (results, error) in
                if let error = error {
                    dprint(error.localizedDescription)
                    resolver.fulfill([])
                    return
                }


                guard let finalResults = results else {
                    dprint("can't found results")
                    resolver.fulfill([])
                    return
                }
                let searchResultsWayPoints = finalResults.map {
                    GoogleWayPoint(id: $0.placeID, address: $0.attributedFullText.string)
                }
                resolver.fulfill(searchResultsWayPoints)
            }
        }
    }

किसी भी सहायता की सराहना की जाएगी। धन्यवाद।

0
Jimmy 9 जून 2020, 06:38

1 उत्तर

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

इसलिए मैंने इस समस्या को हल कर लिया है, लेकिन मैंने कुछ भी ठीक नहीं किया, क्योंकि यह GooglePlaces ढांचे से है।

इसे हल करने के लिए, कॉलबैक पर बस results को results:[Any]? के रूप में बनाएं।

फिर, guard let पर, इसे सुरक्षित रूप से [GMSAutocompletePrediction] में बदलें।

यहाँ पूरा कोड है

func getGoogleWayPoint(text: String) -> Promise<[GoogleWayPoint]> {
        return Promise<[GoogleWayPoint]> { resolver in
            if text.isEmpty {
                resolver.fulfill([])
                return
            }
            placesClient.findAutocompletePredictions(fromQuery: text, filter: filter, sessionToken: sessionToken) { (results: [Any]?, error) in
                if let error = error {
                    dprint(error.localizedDescription)
                    resolver.fulfill([])
                    return
                }


                guard let finalResults = results as? [GMSAutocompletePrediction] else {
                    dprint("can't found results")
                    resolver.fulfill([])
                    return
                }
                let searchResultsWayPoints = finalResults.map {
                    GoogleWayPoint(id: $0.placeID, address: $0.attributedFullText.string)
                }
                resolver.fulfill(searchResultsWayPoints)
            }
        }
    }
0
Jimmy 10 जून 2020, 08:29