[iOS] [FoursquareAPI]错误:[连接] nw_resolver_start_query_timer_block_invoke

问题描述

我尝试根据用户的位置从foursquare提取一些餐厅数据,但出现一堆查询错误

这是位置代码

protocol UserLocationDelegate {
    func tracingLocation(currentLocation: CLLocation)
}
class UserLocation: NSObject {
    static let shared = UserLocation()
    
    var delegate: UserLocationDelegate?
    var userCurrentLocation: CLLocationCoordinate2D?
    var locationManager: CLLocationManager?
    
    func locationManagerStart() {
        if locationManager == nil {
            locationManager = CLLocationManager()
            locationManager?.requestWhenInUseAuthorization()
            locationManager?.distanceFilter = 1000
            locationManager?.desiredAccuracy = kCLLocationAccuracyBest
            locationManager?.delegate = self
            
        }
        locationManager?.startUpdatingLocation()
    }
    func locationManagerStop() {
        if locationManager != nil {
            locationManager?.stopUpdatingLocation()
        }
    }
    private func upataLocation(currentLocation: CLLocation) {
        delegate?.tracingLocation(currentLocation: currentLocation)
        
    }
    
}

extension UserLocation: CLLocationManagerDelegate {
    
    func locationManager(_ manager: CLLocationManager,didUpdateLocations locations: [CLLocation]) {
        if let location = locations.last {
            upataLocation(currentLocation: location)
            userCurrentLocation = location.coordinate
        }
    }
    func locationManager(_ manager: CLLocationManager,didChangeAuthorization status: CLAuthorizationStatus) {
        switch status {
        case .notDetermined:
            manager.requestWhenInUseAuthorization()
        case .authorizedWhenInUse:
            manager.startUpdatingLocation()
        case .authorizedAlways:
            manager.startUpdatingLocation()
        case .restricted:
            print("got error here,Authorization has been restriced")
        case .denied:
            locationManager = nil
            print("got error here,Authorization has been denied")
        @unkNown default:
            break
        }
    }
    
    func locationManager(_ manager: CLLocationManager,didFinishDeferredUpdatesWithError error: Error?) {
        if let error = error {
            print(error.localizedDescription)
        }
    }
    
}

这是API代码, 因为“地点/搜索”不包含有关地点的详细数据。 所以我必须分开 首先,获取场馆的ID,然后使用ID来获取场馆的详细信息

然后,我将记录限制设置为“ 50”,这意味着我应该对Foursquare服务器获得50个响应。

class FoursquareAPI: NSObject,CLLocationManagerDelegate {
    
    let categoryId = "4d4b7105d754a06374d81259" //food category
    let client = Foursquareapiclient(clientId: clientId,clientSecret: clientSecret)

    func getDataFromJSON(with location: CLLocation,completion: @escaping (Data?,Error?) -> Void) {

        let parameter:[String:String] = ["ll": "\(location.coordinate.latitude),\(location.coordinate.longitude)","limit": "50","categoryId": categoryId]
        client.request(path: "venues/search",parameter: parameter) {result in
            switch result {
            case let .success(data):
                completion(data,nil)
                //print(data)
            case let .failure(error):
                completion(nil,error)
            }

        }
    }
    func getVenuesData(with VenueID: String,Error?) -> Void) {
        let parameter: [String: String] = ["VENUE_ID": VenueID]
        client.request(path: "venues/\(VenueID)",nil)
            case let .failure(error):
                completion(nil,error)
            }
        }
        
    }
    

}

通过用户地理位置参数调用api, 以下是一些条件: 1,app首次启动? 2,用户自上次数获取以来的移动距离

    func tracingLocation(currentLocation: CLLocation) {
        
        self.userCurrentLocation = currentLocation
        let userMoved = currentLocation.distance(from: CLLocation(latitude: UserDefaults.standard.double(forKey: "userLastLat"),longitude: UserDefaults.standard.double(forKey: "userLastLong")))
        
        
        if UserDefaults.standard.bool(forKey: "isFirstLaunch") || userMoved > 1000 {
            loadBaseJSONData(with: currentLocation)
            UserDefaults.standard.set(currentLocation.coordinate.latitude,forKey: "userLastLat")
            UserDefaults.standard.set(currentLocation.coordinate.longitude,forKey: "userLastLong")
            UserDefaults.standard.set(false,forKey: "isFirstLaunch")
        }else {
            print(userMoved as Any)
            print("called step 3")
            return
        }

    }

api调用链并将数据保存到CoreData:

    //MARK: - JSON
    
    func loadBaseJSONData(with location: CLLocation) {
        
        FoursquareAPI().getDataFromJSON(with: location){ (data,error) in
            if let error = error {
                print(error.localizedDescription)
                return
            }
            guard let data = data else {return}
            self.venuesBaseData = self.parseBaseJSON(data: data)
        
        }
    }

    func parseBaseJSON(data: Data) -> [VenueBaseData] {
        
        let decoder = JSONDecoder()
        
        do {
            let loadDataStore = try decoder.decode(RootClass.self,from: data)
            self.venuesBaseData = loadDataStore.rootClass.venuesBaseData
            for value in self.venuesBaseData {
                loadVenuesJSON(whit: value.venueid)
                
            }
        }catch {
            print(error)
        }
        return venuesBaseData
    }
    
    func loadVenuesJSON(whit venueID: String) {
        FoursquareAPI().getVenuesData(with: venueID,completion: {(data,error) in
            if let error = error {
                print(error)
                return
            }
            guard let data = data else {return}
            self.venue = self.parseVenueJSON(data: data)
            
            //self.tableView.reloadData()
        })
    }
    func parseVenueJSON(data: Data) -> Venue {
        let decoder = JSONDecoder()
        
        do {
            let loadDataStore = try decoder.decode(Response<SearchResponse>.self,from: data)
            self.venue = loadDataStore.response.venues
            if venue.photo.photoCount != 0 && venue.location.address != nil && venue.tips?.tipsCount != 0 {
                var restaurant: RestaurantMO!
                if let appdelegate = (UIApplication.shared.delegate as? AppDelegate) {
                    restaurant = RestaurantMO(context: appdelegate.persistentContainer.viewContext)
                    restaurant.id = venue.venueId
                    restaurant.name = venue.name
                    restaurant.type = venue.categories?[0].name
                    restaurant.location = venue.location.address
                    restaurant.phone = venue.contact.phone
                    restaurant.imageURL = venue.photo.group?[0].item?[0].venuePhotoURL
                    restaurant.summary = venue.tips?.tipsGroups?[0].tipsItems?[0].summary
                    restaurant.lat = venue.location.latitude!
                    restaurant.long = venue.location.longitude!
                    restaurant.distance = (self.userCurrentLocation?.distance(from: CLLocation(latitude: restaurant.lat,longitude: restaurant.long)))!
                    
                    if let url = restaurant.imageURL {
                        URLSession.shared.dataTask(with: URL(string: url)!) {(data,response,error) in
                            if let error = error {
                                print(error)
                                return
                            }

                            if let data = data,let image = UIImage(data: data) {
                                dispatchQueue.main.sync {
                                    restaurant.image = image.pngData()
                                    appdelegate.saveContext()
                                }
                            }

                        }.resume()
                    }
                    
                    appdelegate.saveContext()
                }
            }

            
        }catch{
            print(error)
        }
        return venue
    }

所有这些之后, 我有14条记录显示在tableView上。 并在调试区域出现一堆错误

2020-10-08 10:07:19.087371+0800 DicFood[1041:182564] [connection] nw_resolver_start_query_timer_block_invoke [C8] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.840829+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C9] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.841318+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C10] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.858710+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C11] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.858858+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C12] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.858996+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C13] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.890860+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C14] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.891158+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C15] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.891241+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C16] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.891375+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C17] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.891420+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C18] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.891456+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C19] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.891574+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C20] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.892405+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C21] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.893128+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C22] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.893205+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C23] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.893242+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C24] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.893339+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C25] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.893374+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C26] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.894107+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C27] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.894260+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C28] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.894299+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C29] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.895213+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C30] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.895585+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C31] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.896063+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C32] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.896121+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C33] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.896159+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C34] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.896194+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C35] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.896981+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C36] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.897772+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C37] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.897841+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C38] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.897877+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C39] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.898385+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C40] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.898436+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C41] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.898471+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C42] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.898504+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C43] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.898542+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C44] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.898575+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C45] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.899597+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C46] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.899652+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C47] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.900221+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C48] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.900296+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C49] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.900383+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C50] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.900420+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C51] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.900461+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C52] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.900495+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C53] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.901379+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C54] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.901423+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C55] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.901959+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C56] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.902494+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C57] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:19.903016+0800 DicFood[1041:182413] [connection] nw_resolver_start_query_timer_block_invoke [C58] Query fired: did not receive all answers in time for api.foursquare.com:443
2020-10-08 10:07:20.836059+0800 DicFood[1041:182434] [connection] nw_resolver_start_query_timer_block_invoke [C59] Query fired: did not receive all answers in time for fastly.4sqi.net:443
2020-10-08 10:07:30.538722+0800 DicFood[1041:182565] [connection] nw_resolver_start_query_timer_block_invoke [C60] Query fired: did not receive all answers in time for app-measurement.com:443
2020-10-08 10:07:30.894479+0800 DicFood[1041:182564] [connection] nw_resolver_start_query_timer_block_invoke [C61] Query fired: did not receive all answers in time for app-measurement.com:443
2020-10-08 10:07:35.997608+0800 DicFood[1041:182564] [connection] nw_resolver_start_query_timer_block_invoke [C59] Query fired: did not receive all answers in time for fastly.4sqi.net:443
2020-10-08 10:08:15.394302+0800 DicFood[1041:182575] [connection] nw_resolver_start_query_timer_block_invoke [C59] Query fired: did not receive all answers in time for fastly.4sqi.net:443
2020-10-08 10:08:30.715883+0800 DicFood[1041:182875] [connection] nw_resolver_start_query_timer_block_invoke [C7] Query fired: did not receive all answers in time for firebaseinstallations.googleapis.com:443
2020-10-08 10:08:38.935937+0800 DicFood[1041:182875] [connection] nw_resolver_start_query_timer_block_invoke [C59] Query fired: did not receive all answers in time for fastly.4sqi.net:443
2020-10-08 10:08:49.383196+0800 DicFood[1041:182875] [connection] nw_resolver_start_query_timer_block_invoke [C7] Query fired: did not receive all answers in time for firebaseinstallations.googleapis.com:443
2020-10-08 10:09:11.498304+0800 DicFood[1041:182921] [connection] nw_resolver_start_query_timer_block_invoke [C59] Query fired: did not receive all answers in time for fastly.4sqi.net:443

有人知道如何解决此问题吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...