Это обзор моей проблемы:
Я добавляю (и подтверждаю, что они добавлены) около 1400 отношений, загруженных из службы мыла в CoreDat. После того, как я закрываю приложение и открываю его снова, некоторые отношения теряются; Я вижу только около 800 из них (хотя это варьируется). Также я не получаю никаких ошибок.
А теперь подробнее:
У меня есть объект с именем User
, который содержит информацию об услугах, которые пользователь сохранил; это выглядит примерно так:
@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 объектов.
Почему это могло происходить? Кто-нибудь имел это раньше?
Заранее спасибо.
UPDATE:
Люди продолжают утверждать, что я не правильно использую Core Data, но проблема в том, что данные теряются ПОСЛЕ перезапуска приложения. Там нет абсолютно никаких проблем с ним при использовании. Я использую Базовые данные настолько корректно, насколько это возможно, учитывая ограниченную документацию и примеры, которые вы получаете от Apple.