Я новичок в 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
}
// ...
})
}
}
Я бы очень признателен за некоторые рекомендации. Заранее спасибо!
Perfect. Спасибо! –