Связь с основными данными потеряна после извлечения большего количества объектов в объекты
У меня есть базовая модель данных, которая выглядит следующим образом.
Внутри стола я загружаю все свои встречи. НаUILabel
внутри моегоcustom cell
Я установил название места встречи следующим образом.
NSString *info = appointment.location.label_vrij;
Сначала все работает Oké, но когда я загружаю больше встреч в мойdatabase
, Все информационные строки идутNULL
, После некоторой отладки я заметил, что такжеappointment.location
возвращается.NULL
Вот так выглядит мой NSFetchRequest
RKManagedObjectStore *store = [[SanMaxDataModel sharedDataModel] objectStore];
NSManagedObjectContext *context = store.mainQueueManagedObjectContext;
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Appointment"];
NSString *relationshipKeyPath = @"location"; // Set this to the name of the relationship on "A" that points to the "B" objects;
NSArray *keyPaths = [NSArray arrayWithObject:relationshipKeyPath];
[fetchRequest setRelationshipKeyPathsForPrefetching:keyPaths];
NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"dateStart" ascending:YES];
fetchRequest.sortDescriptors = @[descriptor];
NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"tijd_dag = %@",strDate];
[fetchRequest setPredicate:predicate];
NSArray *matches = [context executeFetchRequest:fetchRequest error:nil];
appointments = [matches mutableCopy];
Так что я думаю, что мои отношения просто испортились?
Editi»
Я использую Restkit для отображения моих встреч в моей основной базе данных. Из комментариев ниже я решил отключить флаг опции для атрибута местоположения внутри объекта Назначение. Потому что у встречи всегда должно быть место.
Теперь, когда я загружаю первый день. Все работает хорошо, Но когда я пытаюсь загрузить на следующий день, я получаю сообщение об ошибке:The operation couldn\U2019t be completed. (Cocoa error 1570.)
Теперь, когда я смотрю на подробную ошибку
DetailedError: {
NSLocalizedDescription = "The operation couldn\U2019t be completed. (Cocoa error 1570.)";
NSValidationErrorKey = location;
NSValidationErrorObject = " (entity: Appointment; id: 0x9272c70 ; data: {\n autouur = 1;\n breekuur = 0;\n data1 = \"\";\n data2 = \"\";\n data3 = \"\";\n data4 = \"\";\n data5 = \"\";\n data6 = \"\";\n data7 = \"\";\n data8 = \"\";\n data9 = \"\";\n dateStart = \"2013-10-23 09:00:00 +0000\";\n dateStop = \"2013-10-23 09:30:00 +0000\";\n duration = 30;\n email = \"\";\n entryID = 774294984959;\n info = \"\";\n \"is_blocked\" = 0;\n \"is_except\" = 0;\n \"is_free\" = 1;\n \"is_moved\" = 0;\n \"is_vert\" = 0;\n locatieID = 773150;\n location = nil;\n multiID = nil;\n serverEntryID = 774294984959;\n serverLocatieID = 773150;\n sms = \"\";\n \"tijd_dag\" = 20131023;\n \"tijd_uur\" = 900;\n})";
}
Вот как я загружаю JSON в основные данные
-(void)getAppointmentsForDate:(NSString *)date forUserID:(NSString *)userID{
API *api = [API new];
RKManagedObjectStore *store = [[SanMaxDataModel sharedDataModel] objectStore];
NSLog(@"store is %@",store);
NSManagedObjectContext *context = store.mainQueueManagedObjectContext;
RKObjectManager *objectManager = [api mapAppointments];
NSString *urlString = [NSString stringWithFormat:@"/doctor/1.0/json/nl/appointments/get-by-date/apikey/%@?uid=%@&date=%@",APIKey,userID,date];
// NSString *urlString = [NSString stringWithFormat:@"/doctor/1.0/json/nl/appointments/get-by-date/apikey/%@?uid=77382&date=%@",APIKey,date];
NSURLRequest *request = [objectManager requestWithObject:nil method:RKRequestMethodGET path:urlString parameters:nil];
RKManagedObjectRequestOperation *operation = [objectManager managedObjectRequestOperationWithRequest:request managedObjectContext:context success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSLog(@"TILL HERE IN METHOD");
NSError *error = nil;
[[NSNotificationCenter defaultCenter] postNotificationName:@"appointmentsLoaded" object:self];
[[SanMaxDataModel sharedDataModel] saveToPersistentStoreAsync:&error];
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:[error localizedDescription]
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
NSLog(@"Hit error: %@", error);
}];
[objectManager enqueueObjectRequestOperation:operation];
}