1
私はクロージャを実行する関数を持っています。クロージャ実行
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()
呼び出され、その後、私は一度だけので、私はグローバルな配列にFRDRouteDirectionServices.getRoutesWithLocations(limitedClLocations, travelMode: TravelMode.TravelModeWalking, completitionBlock: { (routes) in
で返されたルートを追加して、このplotPolyLineOnMap
を呼び出すようにしました。
今私は閉鎖の実行が非同期的に行われることを知っています。 plotPolyLineOnMap
は、ルートのグローバル配列に対して1回だけ呼び出すことができます。閉鎖
let arrayRouts : NSArray = routes as! NSArray
if arrayRouts != nil && arrayRouts.count > 0 {
self.routes.arrayByAddingObject(routes)
self.plotPolyLineOnMap()
}
で
これはAnyObjectタイプなので、「AnyObject 'の値は決してゼロにはできません。比較は許可されません」 –
コマンドを押してcompletitionBlockをクリックし、completitBlockの戻り値の型をチェックし、型を返します(たとえば、戻り値の型が配列の場合は、配列を使ってルートを変換します)。 NSArrayはそれをnilと比較します。 –
署名がgetRoutesWithLocationsある(場所:[ANYOBJECT]、 travelMode:TravelMode、 completitionBlock:(ルート:ANYOBJECT) - >ボイド、 andErrorBlock errorBlock:(エラー:ANYOBJECT) - >ボイド) –