Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
/ сохраняем данные в фоне, чтобы не замораживать интерфейс
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
for(NSDictionary *user in controller.userFriends){
NSManagedObject *friend = [NSEntityDescription insertNewObjectForEntityForName:@"Friend"
inManagedObjectContext:self.managedObjectContext];
[friend setValue:user[@"first_name"] forKey:@"first_name"];
[friend setValue:user[@"last_name"] forKey:@"last_name"];
[friend setValue:[NSData dataWithContentsOfURL:[NSURL URLWithString:user[@"photo"]]] forKey:@"photo"];
[friend setValue:user[@"status"] forKey:@"status"];
NSLog(@"friend: %@", friend);
}
if([self.managedObjectContext hasChanges] && ![self.managedObjectContext save:nil]){
NSLog(@"Unresolved error!");
abort();
}
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
NSData *img;
if([_userFriends[(NSUInteger) indexPath.row][@"photo"] isKindOfClass:[NSData class]]){
img = _userFriends[(NSUInteger) indexPath.row][@"photo"];
} else {
NSString* imgPath = _userFriends[(NSUInteger)indexPath.row][@"photo"];
img = [NSData dataWithContentsOfURL:[NSURL URLWithString:imgPath]];
}
dispatch_async(dispatch_get_main_queue(), ^{
cell.imageView.image = [UIImage imageWithData:img];
});
});
Core Data для iOS. Глава №1. Практическая часть