2010-11-09 8 views
5

Qué podría causar un error de volver nula, esto es lo que tengomanagedObjectContext salvación falla con ser nula de error

+ (BOOL)saveContext:(NSManagedObjectContext *)context 
    { 
     NSError *error = nil; 
     if (![context save:&error]) 
     { 
     DLog(@"ERROR %@, %@", error, [error userInfo]); 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Sorry" 

                 message:@"Error Saving the Data" 
                 delegate:nil 
               cancelButtonTitle:@"OK" 
               otherButtonTitles:nil]; 

     [alert show]; 
     [alert release]; 

     return NO; 
     } 
    return YES; 
    } 

El método anterior es un método de clase, no estoy seguro de por qué el error no tiene cualquier información.

Este método se denomina como este

[HSCoreDataUtility saveContext: self.managedObjectContext];

cuando un modalViewController se está cerrando y volviendo al NavigationController, entonces necesito que se guarde el contexto, pero a través de un error, ahora creo que tengo una idea de la causa de que no se guarde, pero shouldn ' ¿El error me da una pista? pero el registro sólo dice "ERROR (nulo), (nulo)"

cualquier pensamiento

+0

¿Estás seguro de que 'context' no es nada? –

+0

sí, estoy seguro. – creativeKoder

Respuesta

7

La única forma en que veo que ocurre esta situación es si pasa en un contexto nil. Pondría una bomba lógica en la parte superior de ese método de clase para protegerse de eso.

Bueno, en realidad, no crearía un método de clase para esta pequeña cantidad de código; pero el punto sigue en pie. Compruebe si hay un contexto nil.

+0

el contexto no es nada, lo sé con certeza – creativeKoder

+0

i Como paso el contexto, comienza en el delegado de la aplicación y lo paso por ahí desde allí, podría tener algo que ver con eso. – creativeKoder

+0

¿Puede ser liberado en alguna parte o no ser conservado? Haga que escupe el actual '[context retainCount]' con una verificación 'nil'. Nunca está de más comprobarlo. –

0

Uhm, no estoy seguro de% @ hará que el error de ir detallado. [error localizedDescription]?

+0

he usado ambos, [error userInfo] y [error localizedDescription], mismo error de cosa (nulo), (nulo) – creativeKoder

+0

también eso es lo que está en el código de muestra de apple – creativeKoder

8

Viví tu dolor y terminé sobreviviendo. ;)

Después de un largo tiempo de depuración me di cuenta en el método de validación de objetos personalizados, en algunos casos estaba devolviendo NO y no se ha inicializado un error.

Si tiene este problema, compruebe los métodos del objeto de validación. Ese probablemente también fue su problema.

+0

Puede que no haya sido el problema original del póster, pero esto es exactamente lo que me sucedió. ¡Gracias! Parece que Core Data debería arrojar una excepción en lugar de contradecir la documentación de NSManagedObjectContext. Debo presentar un error. –

+0

Esto merece 10 * hasta * votos. Esto me ahorró horas de tirar del pelo, ¡estoy seguro! De acuerdo, probablemente no sea el problema original, pero sin duda se produce con los mismos síntomas. –

+0

¡Dios mío! Me gustaría pasar horas para resolver esto. ¡Gracias! –

0

me encontré con este problema, y ​​después de depuración mucho tiempo he encontrado que es debido a una declaración duplicado de la NSError * error, puede que tenía otro NSError * Error en el ámbito exterior, como:

NSError* error = nil; 

// some code 

if (!error) 
{ 
    NSError* error = nil; 

    // your code 
} 

Entonces el error será nulo, aunque de hecho hay una excepción.

1

Este es un hilo muy viejo, pero espero que mi respuesta ayude a alguien que encuentre esto en Google como yo lo hice. Me encontré con este mismo problema y ninguna de estas respuestas fue mi problema; resulta que cometí el error tonto y descabellado de no eliminar/reinstalar la aplicación cuando cambié el modelo de datos, por lo que el guardado estaba fallando sin un error. ¡Asegúrate de no hacer lo mismo! :)

Cuestiones relacionadas