【问题标题】:Closure execution关闭执行
【发布时间】:2016-08-16 05:56:28
【问题描述】:

我有一个执行闭包的函数。

func callWebServiceToFindLocation(limitedClLocations: [CLLocation]) {
//      self.view.showLoaderWithMessage(FRDMessageConstants.pleaseWaitWhilecollectingGPSCoordinates)
        FRDRouteDirectionServices.getRoutesWithLocations(limitedClLocations, travelMode: TravelMode.TravelModeWalking, completitionBlock: { (routes) in

//            self.routes.arrayByAddingObject(routes)
//            print("\(self.routes.count)")
            FRDMapUtilities.sharedInstance.plotPolyLineOnMap(routes as! NSArray, viewMap: self.viewMap)
            FRDMapUtilities.sharedInstance.addMarkerAndSetAllMarkerBoundToScreen(self.clLocations, viewMap: self.viewMap, allStoreDetails: self.allStoreDetailsForMarker, myLocaion: self.myLocation)
            self.view.hideLoader()
            }, andErrorBlock: { (error) in
            self.showRefreshButton()
            self.view.hideLoader()
        })
    }  

由于某些原因,现在这个函数将被调用两次callWebServiceToFindLocation(),然后我只需要调用一次plotPolyLineOnMap,因此我附加了FRDRouteDirectionServices.getRoutesWithLocations(limitedClLocations, travelMode: TravelMode.TravelModeWalking, completitionBlock: { (routes) in中返回的路由
到一个全局数组中。
现在我知道闭包的执行是异步进行的。我怎样才能为路由的全局数组只调用一次plotPolyLineOnMap

【问题讨论】:

    标签: ios swift closures


    【解决方案1】:

    在闭包中检查条件

    let arrayRouts : NSArray = routes as! NSArray
    
    if arrayRouts != nil && arrayRouts.count > 0 {
    self.routes.arrayByAddingObject(routes)
    self.plotPolyLineOnMap()
    }
    

    当第一次关闭将被调用时,时间路由将为 nil,第二次路由将具有响应数据,因此此条件应该有效。

    【讨论】:

    • 它是 AnyObject 类型,因此出现“'AnyObject' 类型的值永远不能为零,不允许比较”
    • 按命令并点击completionBlock并检查completionBlock的返回类型是什么,然后转换该类型的路由(例如,如果返回类型是数组然后转换数组中的路由),例如:-路由! NSArray 然后将其与 nil 进行比较。
    • 签名为getRoutesWithLocations(locations: [AnyObject], travelMode: TravelMode, completitionBlock: (routes: AnyObject) -> Void, andErrorBlock errorBlock: (error: AnyObject)-> Void)
    • 尝试更新的答案。
    猜你喜欢
    • 1970-01-01
    • 2016-07-15
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多