2016-08-16 6 views
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回だけ呼び出すことができます。閉鎖

初めての閉鎖は時間のルートは、この条件が動作するはずですので、nilの目と2回目のルートはresponceデータを持つことになりますとなることと呼ばれます
let arrayRouts : NSArray = routes as! NSArray 

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

答えて

0

チェック状態。

+0

これはAnyObjectタイプなので、「AnyObject 'の値は決してゼロにはできません。比較は許可されません」 –

+0

コマンドを押してcompletitionBlockをクリックし、completitBlockの戻り値の型をチェックし、型を返します(たとえば、戻り値の型が配列の場合は、配列を使ってルートを変換します)。 NSArrayはそれをnilと比較します。 –

+0

署名がgetRoutesWithLocationsある(場所:[ANYOBJECT]、 travelMode:TravelMode、 completitionBlock:(ルート:ANYOBJECT) - >ボイド、 andErrorBlock errorBlock:(エラー:ANYOBJECT) - >ボイド) –

関連する問題