CoreData : App crashes when deleting last instance created

Posted by Leo on Stack Overflow See other posts from Stack Overflow or by Leo
Published on 2010-06-01T07:40:18Z Indexed on 2010/06/01 7:43 UTC
Read the original article Hit count: 280

Hello,

I have a 2 tabs application. In the first one, I'm creating objects of the "Sample" and "SampleList" entities. Each sampleList contains an ID and a set of samples. Each sample contains a date and temperature property.

In the second tab, I'm displaying my data in a tableView. I implemented the

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

method in order to delete SampleLists. In my xcdatamodel the delete rule for my relationship between SampleList and Sample is Cascade.

My problem is that when I try to delete SampleList I just created, the app crashes and I receive a EXC_BAD_ACCESS signal. If I restart it, then I'm able to delete "old" sampleList without any problems.

Earlier, I had the following problem : I couldn't display the the sampleLists I created since I launched the app, because it crashed too. I received also the EXC_BAD_ACCESS signal. Actually, it seemed that the date of the last sample created of the set was nil. If I am not releasing the NSDate I'm using to set the sample's date, I don't have this problem anymore...

If anyone could help me to find out what could cause my troubles it would be great !!

Here is the method I'm using to create new instances :

SampleList *newSampleList = (SampleList *)[NSEntityDescription insertNewObjectForEntityForName:@"SampleList" inManagedObjectContext:managedObjectContext];
[newSampleList setPatchID:patchID];
NSMutableSet *newSampleSet = [[NSMutableSet alloc] init];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

for (int i = 0; i < [byteArray count]; i=i+4, sampleCount++) {
    NSDateComponents *comps = [[NSDateComponents alloc] init];
    [comps setYear:year];
    [comps setMonth:month];
    [comps setDay:day];
    [comps setHour:hours];
    [comps setMinute:minutes];
    NSDate *sampleDate = [gregorian dateFromComponents:comps];

    Sample *newSample = (Sample *)[NSEntityDescription insertNewObjectForEntityForName:@"Sample" inManagedObjectContext:managedObjectContext];      

    [newSample setSampleDate:sampleDate];
    [newSample setSampleTemperature:[NSNumber numberWithInt:temperature]];

    [newSampleSet addObject:newSample];
    [comps release];
    //[sampleDate release];
}

[newSampleList setSampleSet:newSampleSet];
// [newSampleSet release];

NSError *error;
if (![managedObjectContext save:&error]) {
    NSLog(@"Could not Save the context !!");
}

[gregorian release];

© Stack Overflow or respective owner

Related posts about iphone

Related posts about objective-c