2010-09-20 19 views
1

J'utilise ce code (de iphone Core Data Unresolved error while saving) pour imprimer une description plus détaillée d'un objet NSError:Impression userInfo d'un NSError de Core Data lance EXC_BAD_ALLOC

- (NSString*)debugDescription 
{ 
    NSMutableArray* errorLines = [NSMutableArray array]; 

    [errorLines addObject:[NSString stringWithFormat:@"Failed to save to data store: %@", [self localizedDescription]]]; 

    NSArray* detailedErrors = [[self userInfo] objectForKey:NSDetailedErrorsKey]; 
    if (detailedErrors != nil && [detailedErrors count] > 0) 
    { 
    for (NSError* detailedError in detailedErrors) 
    { 
     // The following line crashes the app 
     [errorLines addObject:[NSString stringWithFormat:@" DetailedError: %@", [detailedError userInfo]]]; 
    } 
    } 
    else 
    { 
    [errorLines addObject:[NSString stringWithFormat:@" %@", [self userInfo]]]; 
    } 

    return [errorLines description]; 
} 

Le problème est que chaque fois que je tente d'accéder l'objet userInfo d'une erreur NSE imbriquée, l'application tombe en panne avec EXC_BAD_ALLOC.

L'erreur en question est générée lorsque je crée un nouveau NSManagedObject et que je le remplis avec des données. Toutes les propriétés que j'affecte sur l'objet conservent tout ce qui leur est assigné, mais il semble que quelque chose ne soit pas conservé correctement.

Comment puis-je suivre cela? NSZombieEnabled ne m'a rien dit d'utile.

Répondre

2

Doh. J'avais nommé une de mes colonnes (et la propriété d'assignation associée) "description", qui bien sûr remplace la méthode 'description' de NSObject, provoquant de mauvaises choses. Stupide que je suis.

+0

Ran pour exactement le même bug, merci de poster ce – Mortoc