2014-06-25 28 views
0

慢慢進入Swift,但仍然在與完成塊拼搏。下面的代碼如何在Swift中看起來像?在Swift中完成塊語法

[self.eventStore requestAccessToEntityType:type completion:^(BOOL granted, NSError *error) { 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [self alertViewWithDataClass:((type == EKEntityTypeEvent) ? Calendars : Reminders) status:(granted) ? NSLocalizedString(@"GRANTED", @"") : NSLocalizedString(@"DENIED", @"")];    
    }); 
}]; 

回答

3
self.eventStore.requestAccessToEntityType(type) { 
    (granted: Bool, err: NSError!) in 
    dispatch_async(dispatch_get_main_queue()) { 
     ... 
    } 
} 

的工作代碼的例子,我是在迅速:)

2

你的Objective-C在斯威夫特完成塊「(在這種情況下,現在所謂的「封閉」)將包含experimenting with this exact API所有的相同的信息:

  1. 參數標籤和類型(在括號中的塊的開始)
  2. 返回類型(由前面「 - >」)
  3. 「在」從代碼中分離簽名

注意,這個方法的簽名指定的參數類型,關鍵字,這樣你真正需要做的還有爲他們供應的名字:)(類型推斷FTW!)另外,你的塊返回'Void',所以我們不需要在這裏包含返回類型。

這將使我們:

self.eventStore.requestAccessToEntityType(type) { (granted, err) in 
    dispatch_async(dispatch_get_main_queue()) { 
     ...other stuff... 
    } 
}