Skip to content

Instantly share code, notes, and snippets.

@naqi
Created March 26, 2015 17:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save naqi/b41a9d4758440a7d666c to your computer and use it in GitHub Desktop.
Save naqi/b41a9d4758440a7d666c to your computer and use it in GitHub Desktop.
iOS Operations
[manager enqueueBatchOfObjectRequestOperations:requests
progress:^(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations) {
NSLog(@"%lu/%lu", (unsigned long) numberOfFinishedOperations, (unsigned long) totalNumberOfOperations);
} completion:^(NSArray *operations) {
UIApplication *application = [UIApplication sharedApplication];
self.task = [application beginBackgroundTaskWithExpirationHandler:^{
NSLog(@"Took too long!");
[self.syncOperationQueue cancelAllOperations];
[application endBackgroundTask:self.task];
self.task = UIBackgroundTaskInvalid;
}];
if (self.syncOperationQueue && [self.SYNC_ID isEqualToString:[self.syncOperationQueue name]]) {
[self.syncOperationQueue cancelAllOperations];
}
self.syncOperationQueue = [[NSOperationQueue alloc] init];
self.SYNC_ID = [[NSUUID UUID] UUIDString];
[self.syncOperationQueue setName:self.SYNC_ID];
[[self syncOperationQueue] waitUntilAllOperationsAreFinished];
[self.syncOperationQueue addOperationWithBlock:^{
//Manage Users
NSArray *usersFromServer = [[[operations objectAtIndex:1] mappingResult] array];
[self syncLocalUserCacheWithServer:usersFromServer];
}];
[self.syncOperationQueue addOperationWithBlock:^{
NSArray *statusesFromServer = [[[operations objectAtIndex:5] mappingResult] array];
[self syncLocalStatusCacheWithServer:statusesFromServer];
}];
#ifdef kVisitorApp
[self.syncOperationQueue addOperationWithBlock:^{
//Manage Groups
NSArray *groupsFromServer = [[[operations objectAtIndex:6] mappingResult] array];
[self syncGroupsCacheWithServer:groupsFromServer];
}];
#endif
NSLog(@"Finished");
if (onCompletion) {
onCompletion(operations);
}
[application endBackgroundTask:self.task];
self.task = UIBackgroundTaskInvalid;
}];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment