RestKit no elimina los objects huérfanos de la tienda local

Hola, he actualizado RestKit de 0.10.2 a 0.20.3. Después de actualizar ahora cuando faltan objects en el service web, RestKit no los elimina del almacenamiento local. Sé que es compatible con RestKit 0.20.x, pero no puedo configurarlo. Seguí el ejemplo dado aquí. http://restkit.org/api/latest/Classes/RKManagedObjectRequestOperation.html#overview

También seguí preguntas similares sobre Stackoverflow. Pero aún no hay una respuesta aceptada.

Aquí está mi Json

{ "status": "Success", "member_info": [ { "family_id": "1", "user_id": "1" }, { "family_id": "2", "user_id": "1" }, { "family_id": "3", "user_id": "1" } ] } 

Que devuelve todos los miembros de la familia para un usuario en particular. Arriba de Json es para user_id = 1 . Ahora quiero que si se envía una request para user_id = 2 , entonces todos los 3 objects anteriores deberían eliminarse del almacenamiento local, ya que ahora faltan en Json. Aquí está el nuevo Json para user_id = 2

 { "status": "Success", "member_info": [ { "family_id": "4", "user_id": "2" }, { "family_id": "5", "user_id": "2" } ] } 

Así es como estoy creando la asignación.

 [objectManager addResponseDescriptorsFromArray:@[ [RKResponseDescriptor responseDescriptorWithMapping:[self connectionsMapping] method:RKRequestMethodPOST pathPattern:@"familylist" keyPath:@"member_info" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]]; [objectManager addFetchRequestBlock:^NSFetchRequest *(NSURL *URL) { RKPathMatcher *pathMatcher = [RKPathMatcher pathMatcherWithPattern:@"familylist"]; NSDictionary *argsDict = nil; BOOL match = [pathMatcher matchesPath:[URL relativePath] tokenizeQueryStrings:NO parsedArguments:&argsDict]; if (match) { NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"DBConnections"]; NSPnetworkingicate *pnetworkingicate = [NSPnetworkingicate pnetworkingicateWithFormat:@"user_id == %@", [DBUser currentUser].user_id]; fetchRequest.pnetworkingicate = pnetworkingicate; fetchRequest.sortDescriptors = @[ [NSSortDescriptor sortDescriptorWithKey:@"first_name" ascending:YES] ]; return fetchRequest; } return nil; }]; - (RKEntityMapping *)connectionsMapping { RKEntityMapping *connectionsMapping = [RKEntityMapping mappingForEntityForName:@"DBConnections" inManagedObjectStore:objectManager.managedObjectStore]; connectionsMapping.setDefaultValueForMissingAttributes = NO; connectionsMapping.identificationAttributes = @[@"family_id"]; [connectionsMapping addAttributeMappingsFromDictionary:@{ @"family_id": @"family_id", @"user_id": @"user_id", }]; return connectionsMapping; } 

En pnetworkingicado estoy usando [DBUser currentUser].user_id , que devuelve la session actual user_id . Y aquí estoy, estoy llamando al service web.

 [[RKObjectManager shanetworkingManager] postObject:nil path:@"familylist" parameters:params success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { NSLog(@"Objects are %@", mappingResult.array); }]; 

Estoy usando postObject lugar de getObjectsAtPath , porque el server está esperando el método de request POST . ¿Estoy haciendo mal? o necesita hacer algo más para eliminar objects huérfanos. Cualquier ayuda es apreciada.

Finalmente solucioné el problema depurando RestKit paso a paso y encontré este código en RKManagedObjectRequestOperation.m

 if (! [[self.HTTPRequestOperation.request.HTTPMethod uppercaseString] isEqualToString:@"GET"]) { RKLogDebug(@"Skipping deletion of orphaned objects: only performed for GET requests."); return YES; } 

Oh! RestKit no elimina objects huérfanos cuando el método de request es POST . Cambié los web services, GET request GET y funcionó perfectamente. En segundo lugar estaba usando pnetworkingicate

 NSPnetworkingicate *pnetworkingicate = [NSPnetworkingicate pnetworkingicateWithFormat:@"user_id == %@", [DBUser currentUser].user_id]; 

Fue incorrecto, para eliminar todos los objects excepto el usuario actual, tuve que anexar el operador NOT , como este

 NSPnetworkingicate *pnetworkingicate = [NSPnetworkingicate pnetworkingicateWithFormat:@"user_id != %@", [DBUser currentUser].user_id]; 

Entonces pnetworkingicate no significa lo que quieres, pero es lo que no quieres.