Skip to content

Instantly share code, notes, and snippets.

@jwilling
Last active December 19, 2015 08:59
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jwilling/5929321 to your computer and use it in GitHub Desktop.
Save jwilling/5929321 to your computer and use it in GitHub Desktop.
Handling errors when using toProperty:onObject:.
RAC(self.someOrderedSet) = [[[[[[RACAble(self.searchField.text)
filter:^BOOL(NSString *text) {
return (text.length > 0);
}]
map:^id(NSString *text) {
return [Something searchForAutocomplete:text]; // this signal can send errors
}]
switchToLatest]
catchTo:[RACSignal return:[NSArray array]]]
map:^id(NSArray *objects) {
NSMutableOrderedSet *orderedSet = [NSMutableOrderedSet orderedSet];
[orderedSet addObjectsFromArray:objects];
return orderedSet;
}]
retry];
@joshaber
Copy link

joshaber commented Jul 4, 2013

It's much more likely you want to catch errors directly from +searchForAutocomplete: instead of on the switched signal. That way you don't need to worry about that signal ending with an error:

[[[[RACAble(self.searchField.text)      
  filter:^BOOL(NSString *text) {
    return (text.length > 0);
  }]
  map:^id(NSString *text) {
    return [[Something searchForAutocomplete:text] catchTo:[RACSignal return:@[]]];
  }]
  switchToLatest]
  map:^id(NSArray *tickers) {
    NSMutableOrderedSet *orderedSet = [NSMutableOrderedSet orderedSet];
    [orderedSet addObjectsFromArray:tickers];
    return orderedSet;
  }];

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment