Property access beendet app mit "SIGABRT" (Core Data)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Property access beendet app mit "SIGABRT" (Core Data)

    Hallo,

    ich brauch bitte nochmal Hilfe bei einem Problem, dass ich auch nach langer langer suche im Internet nicht loesen konnte. Mein Programm stuerzt ab, sobald ich ein bestimmtes Objekt (Category) aus Core Data hole. In anderen faellen funktioniert der Code ohne Fehler.

    In Core Data habe ich die Entity Product und Category definiert, die ich mir ueber einen Fetch hole:

    Quellcode

    1. NSEntityDescription *entity = [NSEntityDescription
    2. entityForName:@"Category" //oder "Product"
    3. inManagedObjectContext:managedObjectContext];



    Die Objekte, die ich dadurch bekomme moechte ich an einen setter einer anderen Klasse uebergeben.

    Quellcode

    1. NSObject *category = [fetchedResultsController objectAtIndexPath:indexPath];
    2. NSLog(@"category: %i", [category isKindOfClass:[Category class]]); //zeigt mir, dass es tatsaechlich eine Category ist.
    3. cell.cellContent = category;



    Product und Category sind verschiedene Entities, die aber beide name als Property haben. Damit ich an den Setter beide Objekte uebergeben kann, bekommt der Setter ein NSObject:
    MyCell.h

    Quellcode

    1. @interface MyCell : UITableViewCell
    2. {
    3. NSObject *cellContent;
    4. }
    5. @property (nonatomic, retain) NSObject *cellContent;
    6. @end


    MyCell.m

    Quellcode

    1. - (void)setCellContent:(NSObject *)newCellContent
    2. {
    3. if (newCellContent != cellContent)
    4. {
    5. [cellContent release];
    6. cellContent = [newCellContent retain];
    7. }
    8. NSLog(@"content: %@", [cellContent valueForKey:@"name"]); //Programmabsturz bei einem Objekt vom Typ Category, aber funktioniert bei einem Product
    9. }


    Sobald ich auf eine Property von Category zugreife stuerzt das programm mit der Meldung "SIGABRT" ab.
    Ich habe bereits sichergestellt, dass das Objekt, was ankommt vom Typ Category ist und name gibt es laut definition auch. Der Fetch bekommt 6 Datensaetze, was auch richtig ist.

    Category.h

    Quellcode

    1. @class Product;
    2. @class ThumbnailImage;
    3. @interface Category : NSManagedObject
    4. {
    5. }
    6. @property (nonatomic, retain) NSString * name;
    7. @property (nonatomic, retain) ThumbnailImage * image;
    8. @property (nonatomic, retain) NSSet* products;
    9. @end
    10. @interface Category (CoreDataGeneratedAccessors)
    11. - (void)addProductsObject:(Product *)value;
    12. - (void)removeProductsObject:(Product *)value;
    13. - (void)addProducts:(NSSet *)value;
    14. - (void)removeProducts:(NSSet *)value;
    15. @end
    Alles anzeigen


    Category.m

    Quellcode

    1. @implementation Category
    2. @dynamic name;
    3. @dynamic image;
    4. @dynamic products;
    5. @end



    Den Fehler kenn ich aus Faellen, wenn man z.B. ein retain nicht macht, aber da genau der Code mit Product funktioniert, steh ich gerade foellig auf dem Schlauch.
    Ich hoffe mir ist noch zu helfen 8o

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Robhuhn ()

  • Also ich habe in dem xcdatamodel in der Entity ThumbnailImage den ImageToDataTransformer angegeben und in
    Thumbnailimage.h

    Quellcode

    1. @interface ImageToDataTransformer : NSValueTransformer {
    2. }
    3. @end


    sowie in ThumbnailImage.m

    Quellcode

    1. @implementation ImageToDataTransformer
    2. + (BOOL)allowsReverseTransformation {
    3. return YES;
    4. }
    5. + (Class)transformedValueClass {
    6. return [NSData class];
    7. }
    8. - (id)transformedValue:(id)value {
    9. NSData *data = UIImagePNGRepresentation(value);
    10. return data;
    11. }
    12. - (id)reverseTransformedValue:(id)value {
    13. UIImage *uiImage = [[UIImage alloc] initWithData:value];
    14. return [uiImage autorelease];
    15. }
    16. @end
    Alles anzeigen


    Zudem habe ich noch ein DetailImage dessen parent das ThumbnailImage ist. Jeder Category ist ein ThumbnailImage zugeordnet und jedem Produkt ein DetailImage. Beide haben auf das jeweilige Image "No Inverse Relationship" - Eine inverse funktioniert in meinem Modell nicht, aber das sollte nicht den Fehler verursachen ...hoffe ich :)