По какой причине останавливается код после удаления объектов из Core Data?

TTNetworkDataSource* netSource = [TTNetworkDataSource sharedSource];
        [netSource setContext:self];

        TTDataSourceResponse* districtsResponse = [netSource requestDataWithQuery:@{@(OBJECT_TYPE): [HotlineDistrict clsName]}];


        if (districtsResponse != nil) {
            NSArray* objects = [self executeFetchRequestUnsafe:[NSFetchRequest fetchRequestWithEntityName:[HotlineDistrict clsName]] error:&localError];

            NSInteger i = 0;

            if (localError != nil) {
                result = NO; return;
            } else {
                NSLog(@"%lu = fetchedObjects, %lu = districtsResponse", (unsigned long)objects.count, (unsigned long)districtsResponse.objects.count);
                for (NSManagedObject* obj in objects) {
                    NSLog(@"Deleted Objects in fetched objects %ld", (unsigned long)i++);
                    [self deleteObject:obj];
                }

                for (NSManagedObject* obj in districtsResponse.objects) {
                    NSLog(@"Inserted Object in districtsResponse %ld", (unsigned long)i++);
                    [self insertObject:obj];
                }
            }
        } else {
            localError = [NSError errorInfo:@{NSLocalizedDescriptionKey: @"Error when getting districts."}];
            result = NO;
        }

        TTDataSourceResponse* requestTypeResponse = [netSource requestDataWithQuery:@{@(OBJECT_TYPE): [HotlineRequestType clsName]}];


        if (requestTypeResponse != nil) {
            NSArray* objects = [self executeFetchRequestUnsafe:[NSFetchRequest fetchRequestWithEntityName:[HotlineRequestType clsName]] error:&localError];

            NSInteger j = 0;

            if (localError != nil) {
                result = NO; return;
            } else {
                NSLog(@"%lu = fetchedObjects, %lu = requestTypeResponse", (unsigned long)objects.count, (unsigned long)requestTypeResponse.objects.count);
                for (NSManagedObject* obj in objects) {
                    NSLog(@"Deleted Objects in fetched objects %ld", (unsigned long)j++);
                    [self deleteObject:obj];
                }

                for (NSManagedObject* obj in requestTypeResponse.objects) {
                    NSLog(@"Deleted Objects in requestTypeResponse %ld", (unsigned long)j++);
                    [self insertObject:obj];
                }
            }
        } else {
            localError = [NSError errorInfo:@{NSLocalizedDescriptionKey: @"Error when getting request types."}];
            result = NO;
        }


Имеется вот такой код, после прохождения цикла со строкой [self deleteObject:obj] приложение зависает.

Рукопашный дебаг в видел NSLog'ов выдает такие результаты:
NSLog(@"%lu = fetchedObjects, %lu = districtsResponse", (unsigned long)objects.count, (unsigned long)districtsResponse.objects.count);
выдает:
802 = fetchedObjects, 47 = districtsResponse

NSLog'и в циклах выдают перечисление объектов, в итоге как раз получается сумма fetchedObjects и districtsResponse, даже если поставить NSLog в конце тела цикла, что говорит о том что цикл исполняется. Но тем не менее приложение зависает. Таких циклов 2, до второго не доходит, если удалить строки цикла с удалением - все работает.
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы