@yakubov исправил с потоками, добавил везде NSLog и заметил вот что:
[[NSNotificationCenter defaultCenter] postNotificationName:@"MyNotification"
object:self]; - отправляет сообщение запустить мой метод - он запускается:
По итогу - на симуляторе условия с четвергом выполняется, а потом выполняется блок, на девайсе - условие не выпоняется, и оно сразу же запускает метод reloadData. Как это решить? Почему так происходит?
до момента написания поста, я пытался поиграть с различными потоками и в методе - (void)parserDidEndDocument:(NSXMLParser *)parser, использовал загрузку данных в user defaults в побочном потоке. По итогу - все работает на симуляторе. На девайсе - отваливается. Вы уверены что трабл в том, что где-то рассинхрон?
[[NSNotificationCenter defaultCenter] postNotificationName:@"MyNotification"
object:self]; - отправляет сообщение запустить мой метод - он запускается:
- (void)maxkitten
{
NSArray *savedItems = [[NSUserDefaults standardUserDefaults] valueForKey:@"DKey"];
NSPredicate *pn = [NSPredicate predicateWithFormat:@"SELF.weekDay == %@" , @"пн"];
NSPredicate *vtr = [NSPredicate predicateWithFormat:@"SELF.weekDay == %@" , @"вт"];
NSPredicate *sr = [NSPredicate predicateWithFormat:@"SELF.weekDay == %@" , @"ср"];
NSPredicate *chet = [NSPredicate predicateWithFormat:@"SELF.weekDay == %@" , @"чт"];
NSPredicate *ptn = [NSPredicate predicateWithFormat:@"SELF.weekDay == %@" , @"пт"];
NSPredicate *sb = [NSPredicate predicateWithFormat:@"SELF.weekDay == %@" , @"сб"];
NSArray *pon = [savedItems filteredArrayUsingPredicate:pn];
NSArray *vtor = [savedItems filteredArrayUsingPredicate:vtr];
NSArray *sred = [savedItems filteredArrayUsingPredicate:sr];
NSArray *cher = [savedItems filteredArrayUsingPredicate:chet];
NSArray *ptnc = [savedItems filteredArrayUsingPredicate:ptn];
NSArray *subb = [savedItems filteredArrayUsingPredicate:sb];
NSDate *dateToday =[NSDate date];
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"EEEE"];
NSString *string = [format stringFromDate:dateToday];
NSInteger week = [[NSUserDefaults standardUserDefaults] integerForKey:@"checkWeek"];
NSInteger subgr=[[NSUserDefaults standardUserDefaults] integerForKey:@"checkSubgroup"];
if ([string isEqualToString:@"Monday"])
{
block(pon,week,subgr);
}
else if ([string isEqualToString:@"Tuesday"])
{
block(vtor,week,subgr);
}
else if ([string isEqualToString:@"Wednesday"])
{
block(sred,week,subgr);
}
else if ([string isEqualToString:@"Thursday"])
{
NSLog(@"выбрало четверг");
block(cher,week,subgr);
}
else if ([string isEqualToString:@"Friday"])
{
block(ptnc,week,subgr);
}
else if ([string isEqualToString:@"Saturday"])
{
block(subb,week,subgr);
}
else if ([string isEqualToString:@"Sunday"])
{
Recipe *recipe1 = [Recipe new];
recipe1.name = @"Выходной день";
recipe1.detail =@"";
recipe1.detail2= @"";
recipe1.imageFile = @"logo.jpg";
Recipe *recipe2 = [Recipe new];
recipe2.name = @"Выходной день";
recipe2.detail =@"";
recipe2.detail2= @"";
recipe2.imageFile = @"logo.jpg";
Recipe *recipe3 = [Recipe new];
recipe3.name = @"Выходной день";
recipe3.detail =@"";
recipe3.detail2= @"";
recipe3.imageFile = @"logo.jpg";
Recipe *recipe4 = [Recipe new];
recipe4.name = @"Выходной день";
recipe4.detail =@"";
recipe4.detail2= @"";
recipe4.imageFile = @"logo.jpg";
recipes = [NSArray arrayWithObjects:recipe1, recipe2, recipe3, recipe4, nil];
}
[self.tableView beginUpdates];
//[self.tableView insertRowsAtIndexPaths:indexPath.row withRowAnimation:UITableViewRowAnimationFade];
[self.tableView reloadData];
[self.tableView endUpdates];
}
По итогу - на симуляторе условия с четвергом выполняется, а потом выполняется блок, на девайсе - условие не выпоняется, и оно сразу же запускает метод reloadData. Как это решить? Почему так происходит?