2016-03-30 26 views
0

Kod hızlıca değiştirebilmeyi dilediğim bir modül çabası oluşturuyorum. Metod bildirim tipinin ne olduğunu ve ne işe yaradığını söyler misiniz?Bu syntax mean objc nedir?

-(void)sync:(void (^)(UIBackgroundFetchResult result))handler { 

// Make sure not to launch to syncing process at the same time 
if(syncing) { 
    if(handler) { 
     handler(UIBackgroundFetchResultNoData); 
    } 
    return; 
} 

syncing = YES; 

[[VDARSDKController sharedInstance].afterLoadingQueue addOperationWithBlock:^(void) { 
    dispatch_async(dispatch_get_main_queue(), ^(void) { 

     NSArray *tags = nil; 

     // If you need to synchronize with tags, you can add some tags this way: 
     tags = @[ [VDARTagPrior tagWithName:@"BusDev"] ]; 

     //Synchronize the local DB. The old models which are not anymore needed will be automatically deleted. 
     [[VDARRemoteController sharedInstance] syncRemoteModelsAsynchronouslyWithPriors:tags withCompletionBlock:^(id result, NSError *err) { 
      syncing = NO; 
      NSLog(@"PixLive System got the following models: %@",result); 

      if(err) 
       NSLog(@"The system got an error: %@",err); 

      if(handler) { 
       handler(err ? UIBackgroundFetchResultFailed : UIBackgroundFetchResultNewData); 
      } 
     }]; 

    }); 

}]; 
} 
+0

Bu bir bloktur. En yakın 'hızlı 'eşdeğeri bir kapanıştır. – trojanfoe

cevap

0

Bu yöntemin bir edebi Swift çevirisidir:

func sync(handler: ((result: UIBackgroundFetchResult) ->())?) { 

    guard let handler = handler else { 
     return 
    } 

    if syncing { 
     handler(result: .NoData) 
     return 
    } 

    syncing = true 

    VDARSDKController.sharedInstance().afterLoadingQueue.addOperationWithBlock { 
     NSOperationQueue.mainQueue().addOperationWithBlock { 
      let tags = [VDARTagPrior.tagWithName("BusDev")] 
      VDARRemoteController.sharedInstance.syncRemoteModelsAsynchronouslyWithPriors(tags) { [unowned self] result, error in 
       syncing = false 
       NSLog(@"PixLive System got the following models: \(result)"); 

       if let error = error { 
        NSLog(@"The system got an error: \(err)"); 
        handler(result: .Failed) 
       } else { 
        handler(result: .NewData) 
       } 
      } 
     } 
    } 
}