Некоторые отношения CoreData теряются после закрытия приложения

Это обзор моей проблемы:

Я добавляю (и подтверждаю, что они добавлены) около 1400 отношений, загруженных из мыльной службы в CoreDat. После того, как я закрываю приложение и открываю его снова, некоторые связи теряются; Я вижу только около 800 из них (хотя это бывает по разному). Кроме того, я не получаю никаких ошибок.

А теперь подробнее:

У меня есть объект с именем Пользователь , который содержит информацию о сохраненных пользователем услугах; это выглядит примерно так:

@interface OosUser : NSManagedObject

    + (OosUser *) userFromSlug: (NSString *) slug;
    @property (nonatomic, retain) NSString *name;
    @property (nonatomic, retain) NSString *slug;
    @property (nonatomic, retain) NSMutableSet /* Service */ *services;
    - (void) addServicesObject: (Service * )service;
    - (void) removeServicesObject: (Service *) service;

@end

@implementation User

   @dynamic name;
   @dynamic slug;
   @dynamic services;

   static NSString *fetchPredicate = @"slug = %@";

   + (User *) userFromSlug:(NSString *)slug
   {
       User *result = [super objectWithPredicate: fetchPredicate, slug];
       if (!result) {
           result = [super create];
           result.slug = slug;
       }
   return result;
   }

@end

В той части кода, где используются данные, отношения сохраняются следующим образом:

NSMutableSet *userServices = self.user.services;

for (Service *service in servicesToAdd) {
        [self.services addObject: service];
        bool contained = false;
        for (Service *userService in userServices) {
            if ((contained = [userService.slug isEqualToString:service.slug])) {
                break;
            }
        }
        if (!contained) {
            // [userServices addObject:service];
            [self.user addServicesObject: service];
            NSError *error = nil;
            if (![[service managedObjectContext] save:&error]) {
                NSLog(@"Saving failed");
                NSLog(@"Error: %@", [error localizedDescription]);
            }else {
                NSLog(@"Registered service %d: %@", self.services.count, service.slug);
            }
        }
    }

Дело в том, что я проверил с помощью отладчика и вижу, что все более 1400 отношения добавляются, но когда приложение сбрасывается и они восстанавливаются через self.user.services, я получаю только около 800 объектов.

Почему это могло происходить? У кого-нибудь было такое раньше?

Заранее спасибо.


ОБНОВЛЕНИЕ:

Люди продолжают говорить, что я неправильно использую Core Data, но проблема в том, что данные теряются ПОСЛЕ перезапуска приложения. С ним нет абсолютно никаких проблем при его использовании. Я использую Core Data настолько правильно, насколько это может быть в ограниченной документации и примерах, которые вы получаете от Apple.

9
задан pablisco 29 December 2011 в 11:18
поделиться