0

我的应用程序正在尝试从 BE 下载 json 数据并将其保存到核心数据中。为了跟踪要下载的剩余数据内容,我也将它们保存在核心数据中。当数据以 10 个批次下载时,我会从核心数据对象中删除下载的数据 ID。当进入后台时它工作正常。如果应用程序在数据下载期间被终止,它会在应用程序激活时恢复。但是下载后,我无法从 NSManagedObjectContext 中删除下载的数据 ID。我附上了下面的代码:

- (void)removeIdListAtIndexesCustomized:(NSIndexSet *)indexes {
       NSMutableOrderedSet *IdListMutable = [self mutableOrderedSetValueForKey:@"IdList"];

      [indexes enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
      [NSManagedObjectContext deleteObject:[IdListMutable objectAtIndex:idx]];//this is where the program stops
      }];
      NSError *error;
      if (![NSManagedObjectContext  save:&error]) {
         NSLog(@"Save failed: %@", [error localizedDescription]);
      }
 }

-(void)resumeSync{

   SyncData *syncData = [SyncData getSyncData]; //main thread
    NSInvocationOperation  *syncOperation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(getEvents:) object:syncData];
   [syncQueue addOperation:syncOperation];

}

-(void)getEvents:(SyncData *)syncData{

  //....

  [[DataManager sharedInstance] loadEvents:syncData];
  NSIndexSet *albumIndexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 15)];
  [syncData removeAlbumIdListAtIndexesCustomized:albumIndexSet];
}

DataManager.m

-(void)loadEvents:(SyncData *)data{
   EventRequest *eventRequest = [EventRequest new];
   eventRequest.albumData = postData;
   eventDataOperation = [[NSInvocationOperation alloc] initWithTarget:self
                                                            selector:@selector(loadEventRequest:)
                                                              object:eventRequest];
   // Add the operation to the queue and let it to be executed.
   [eventOperationQueue addOperation:eventDataOperation];
   if ([[eventOperationQueue operations] eventDataOperation]) {
      [eventDataOperation waitUntilFinished];
   }
  }
4

0 回答 0