parse docs ios parse.com pfquery pfobject

ios - docs parse platform



PFQuery pinAllInBackground: bloque: nunca termina (2)

Tengo una aplicación Parse y quiero habilitar el almacenamiento de datos local para el uso de almacenamiento en caché / fuera de línea. En mi delegado de aplicación, configuré [Parse enableLocalDatastore]; .

En mi consulta (al servidor), estoy haciendo una consulta normal, pero estoy fijando los resultados al recuperar:

[followingsQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { [PFObject pinAllInBackground:objects block:^(BOOL succeeded, NSError *error) { NSLog(@"er: %@", error); }]; ... //rest of my handler }];

Sin embargo, el bloque de finalización ( NSLog(@"er: %@", error); ) nunca se llama. Ni siquiera con un error. Tengo puntos de interrupción en todas partes. pinAllInBackground:block: se pinAllInBackground:block: , pero nunca se llama a su controlador de finalización (mi aplicación se ha estado ejecutando durante 2 minutos seguidos, está fijando solo 100 objetos, por lo que debe ser instantánea). También probé pinAllInBackground:withName:block: pero no hay diferencia. He intentado pinAll: y nunca vuelve, bloqueando el hilo que llama (aunque no consume ninguna CPU). ¿Como puedó resolver esté problema?



Este es un error conocido que he experimentado al ejecutar un método de tipo inBackground anidado dentro de otro método de tipo inBackground en Parse. La solución actual es utilizar un método de envío diferente, como Grand Central Dispatch.

Prueba esto:

[followingsQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { dispatch_async(dispatch_get_main_queue(), ^{ NSError *error = nil; id result = [PFObject pinAll:objects error:&error]; if (error) { NSLog("error: %@", error); } }); }];