0
我是新來的iOS,並試圖通過將我找到的庫轉換爲前者來解決學習Swift(以及一些Objective C)。到目前爲止,我做得很好,但對於理解一部分有困難;這#define
如何應該工作:這個#define如何在Swift中工作?
#define RunSafeBlock(block, ...) block ? block(__VA_ARGS__) : nil
這是更多的背景:
#import <AFNetworking.h>
// How would I write this in Swift?
#define RunSafeBlock(block, ...) block ? block(__VA_ARGS__) : nil
@interface Client()
@end
@implementation Client
- (void)requestWithBodyBlock:(void (^)(id<AFMultipartFormData> formData))bodyBlock completion:(ClientRequestCompletion)completion {
[self validateAccessToken:^(NSError *error) {
if (error) {
// What does RunSafeBlock do?
RunSafeBlock(completion, nil, error);
return;
}
// ...
}];
}
@end
的AFNetworking
部分是不是真的相關,但在這個例子中,我們正在執行的請求,並驗證了訪問令牌。如果validateAccessToken
返回錯誤,我們會將所有內容傳遞給RunSafeBlock
並退出。在這裏,我們在斯威夫特:
import AFNetworking
// #define RunSafeBlock(block, ...) block ? block(__VA_ARGS__) : nil
class Client {
func requestWithBodyBlock(bodyBlock: (formData: AFMultipartFormData) -> Void, completion: ClientRequestCompletion) {
self.validateAccessToken({(error: NSError) -> Void in
if error != nil {
// RunSafeBlock(completion, nil, error)
return
}
// ...
})
}
}
我真的很感激一些指導。提前致謝!
完美。謝謝! –