Это обзор моей проблемы:
Я добавляю (и подтверждаю, что они добавлены) около 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.