2010-01-19 15 views
5

tengo bastantes lugares en mi aplicación para iPhone con una línea como la siguiente:Sustitución aborta() de errores no resueltos en iPhone/CoreData

if (![context save:&error]) { 
    /* 
    Replace this implementation with code to handle the error appropriately. 

    abort() causes the application to generate a crash log and terminate. 
    You should not use this function in a shipping application, although 
    it may be useful during development. If it is not possible to recover 
    from the error, display an alert panel that instructs the user to quit 
    the application by pressing the Home button. 
    */ 

    NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
    abort(); 
} 

Soy una especie de en una pérdida de lo que en realidad para reemplazar abort() con en una aplicación de producción. No creo que haya una forma sencilla de permitir que los dispositivos de los usuarios te envíen los errores. ¿Cuál es la práctica estándar aquí?

Respuesta

5

Lo que he hecho depende de lo que está sucediendo en la aplicación. Si el guardado se puede revertir sin afectar la aplicación, puede hacerlo. Eso sería bastante raro. Lo más probable es que quiera dejarle saber al usuario que no se pudo guardar. Dependiendo de la causa de la falla, puede ofrecer volver a intentarlo o explicar por qué no fue válido.

Básicamente depende de su aplicación y de la mejor forma de atender al usuario.

+2

Estoy de acuerdo con Don. Al menos debe presentar una alerta al usuario con detalles de lo que salió mal. Quizás una opción para enviarle un informe para que pueda solucionar el problema en la próxima versión. Habiendo dicho eso, estos errores * nunca deberían * ocurrir en la naturaleza. En mi experiencia, los errores con Core Data ocurren casi siempre en desarrollo si se han realizado pruebas adecuadas. El único problema que he visto en la naturaleza con Core Data implica directamente la migración y que generalmente está en el escritorio. –

+0

Sí, me preocupaba que esta fuera una de esas preguntas "sin respuesta real". :) Según mis cálculos, no deberían arrojarse errores, lo que significa que, si los hay, me equivoco sobre algo ... lo cual sería desconcertante. ¡Gracias a todos! – AndrewO

Cuestiones relacionadas