Клиент, который я создаю, использует Reactive Cocoa с Octokit, и пока все идет хорошо. Однако теперь я нахожусь в точке, где я хочу получить коллекцию репозиториев, и у меня возникают проблемы с обволакиванием вокруг этого "RAC way"
// fire this when an authenticated client is set
[[RACAbleWithStart([GHDataStore sharedStore], client)
filter:^BOOL (OCTClient *client) {
return client != nil && client.authenticated;
}]
subscribeNext:^(OCTClient *client) {
[[[client fetchUserRepositories] deliverOn:RACScheduler.mainThreadScheduler]
subscribeNext:^(OCTRepository *fetchedRepo) {
NSLog(@" Received new repo: %@",fetchedRepo.name);
}
error:^(NSError *error) {
NSLog(@"Error fetching repos: %@",error.localizedDescription);
}];
} completed:^{
NSLog(@"Completed fetching repos");
}];
Первоначально предполагалось, что -subscribeNext:
передаст NSArray
, но теперь понимает, что он отправляет сообщение каждый возвращаемый объект, который в этом случае является OCTRepository
.
Теперь я мог бы сделать что-то вроде этого:
NSMutableArray *repos = [NSMutableArray array];
// most of that code above
subscribeNext:^(OCTRepository *fetchedRepo) {
[repos addObject:fetchedRepo];
}
// the rest of the code above
Конечно, это работает, но, похоже, не соответствует функциональным принципам, которые позволяет RAC. Я действительно пытаюсь придерживаться конвенций здесь. Любой свет на возможности RAC/Octokit приветствуются!