Сбой данных Iphone Core при сохранении

В настоящее время я пишу приложение для Iphone с использованием Core Data и получаюEXC_BAD_ACCESS ошибка во время строки кода [managedObjectContext save: & amp; error]. Этот сбой происходит только после того, как я изменил определенные поля. Точнее, у моей сущности есть два строковых поля (из примерно 10 полей), которые получают свои значения из возврата контроллера модального представления (например, текстового редактора). Авария также происходит только после того, как эти поля отредактированы, когда я в первый раз ввожу значение, оно работает нормально.

Причина, по которой у меня есть строка с конструкторами формата с простыми строками, заключается в том, что я пытался скопировать конструкцию ... не уверен, происходит ли это автоматически? Мысль, возможно, сохранила / освободила сообщения от этих строк (эти две от контроллера модального представления), которые были освобождены после увольнения контроллера модального представления или чего-то еще. Хотя не думаю, потому что это все еще не работает.

Вот фрагмент кода, который дает сбой:

[EDITED]

        - (void)actionSheet:(UIActionSheet *)modalView clickedButtonAtIndex:    (NSInteger)buttonIndex
      switch(buttonIndex) {
              case 0: {
                if(message == nil) {
                  message = [NSEntityDescription insertNewObjectForEntityForName:@"MailMessage" inManagedObjectContext:self.managedObjectContext];
                }
                message.toString = txtTo.text;
                message.fromString = txtFrom.text;
                message.subjectString = txtSubject.text;
                message.backgroundColor = [NSNumber numberWithInt:[bgColor intValue]];
                message.textArray = [NSString stringWithFormat:@"%@", stringTextArray];
                message.htmlString = [NSString stringWithFormat:@"%@", stringHTML];
                message.timeStamp = [NSDate date];
                message.statusCode = [NSNumber numberWithInt:0];
                NSError *error = nil;
                if (![message.managedObjectContext save:&error]) {
                    abort();
                }   
                break;
               }
              case 1: {
             break;
              }
      }
      if(buttonIndex != modalView.cancelButtonIndex) {
      [webViewBody loadHTMLString:@"<html><head></head><body></body></html>" baseURL:[NSURL URLWithString:@""]];
      [self.navigationController popToRootViewControllerAnimated:YES];
}

}

А вот и журнал сбоев:

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000015
Crashed Thread:  0

Thread 0 Crashed:
0   libobjc.A.dylib                 0x30011940 objc_msgSend + 20
1   CoreData                        0x367f7d3e -[NSKnownKeysDictionary1 dealloc] + 82
2   CoreData                        0x367f7cda -[NSKnownKeysDictionary1 release] + 34
3   CoreData                        0x3687eec4 -[NSManagedObject(_NSInternalMethods) _setOriginalSnapshot__:] + 40
4   CoreData                        0x36821030 -[NSManagedObjectContext(_NSInternalAdditions) _clearOriginalSnapshotAndInitializeRec:] + 16
5   CoreData                        0x368205f2 -[NSManagedObjectContext(_NSInternalAdditions) _didSaveChanges] + 958
6   CoreData                        0x368133bc -[NSManagedObjectContext save:] + 412
7   Decome                          0x0001fdd6 -[CreateMessageViewController actionSheet:clickedButtonAtIndex:] (CreateMessageViewController.m:163)
8   UIKit                           0x30a6cbd8 -[UIActionSheet(Private) _buttonClicked:] + 256
9   CoreFoundation                  0x30256dd4 -[NSObject performSelector:withObject:withObject:] + 20
10  UIKit                           0x3096e0d0 -[UIApplication sendAction:to:from:forEvent:] + 128
11  UIKit                           0x3096e038 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 32
12  UIKit                           0x3096e000 -[UIControl sendAction:to:forEvent:] + 44
13  UIKit                           0x3096dc58 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 528
14  UIKit                           0x309a6e9c -[UIControl touchesEnded:withEvent:] + 452
15  UIKit                           0x309a60d4 -[UIWindow _sendTouchesForEvent:] + 520
16  UIKit                           0x309a5464 -[UIWindow sendEvent:] + 108
17  UIKit                           0x30936e3c -[UIApplication sendEvent:] + 400

Любая помощь приветствуется, спасибо.

ОБНОВЛЕНИЕ: Кроме того, даже при сбое программы, когда я открываю ее резервную копию, данные сохраняются правильно. Таким образом, EXC_BAD_ACCESS должен произойти после того, как сохранение достигло, по крайней мере, достаточного места для сохранения в постоянном хранилище, как мне кажется.

Если я закомментирую строку сохранения, код теперь работает нормально. Но он не сохраняет после закрытия и выхода. Если я запускаю строку сохранения в моей функции willAppear контроллеров корневого представления, она выдает ту же ошибку EXC_BAD_ACCESS. Консоль не говорит ничего, кроме EXC_BAD_ACCESS если я сделаю обратную трассировку, я получу:

#0  0x30011940 in objc_msgSend ()
#1  0x367f7d44 in -[NSKnownKeysDictionary1 dealloc] ()
#2  0x367f7ce0 in -[NSKnownKeysDictionary1 release] ()
#3  0x3687eeca in -[NSManagedObject(_NSInternalMethods) _setOriginalSnapshot__:] ()
#4  0x36821036 in -[NSManagedObjectContext(_NSInternalAdditions) _clearOriginalSnapshotAndInitializeRec:] ()
#5  0x368205f8 in -[NSManagedObjectContext(_NSInternalAdditions) _didSaveChanges] ()
#6  0x368133c2 in -[NSManagedObjectContext save:] ()
#7  0x0000314e in -[RootViewController viewWillAppear:] (self=0x11b560, _cmd=0x3014ecac, animated=1 '\001') at /Users/inckbmj/Desktop/iphone/Decome/Classes/RootViewController.m:85

Извините, код не был правильно отформатирован раньше. Когда этот контроллер представления создается, если он не является новым & quot; сообщением & quot; ему передается объект сообщения, полученный из fetchedResultsController следующим образом:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    MailMessage *aMessage = (MailMessage *)[fetchedResultsController objectAtIndexPath:indexPath];
    [messageView loadMessage:aMessage viewOnly:NO usingTemplate:NO];
    messageView.managedObjectContext = self.managedObjectContext;
    [self.navigationController pushViewController:messageView animated:YES]; 
}

(первый набор кода взят из файла MessageViewController.m, который является классом, к которому относится messsageView)

Это происходит сбой, только если я представляю свой EditorViewController как модальное представление, а затем возвращаюсь. Даже если я изменю строки textArray и htmlString (которые являются единственными вещами, влияющими на модальное представление) на:

message.textArray = @"HELLO";
message.htmlString = @"HELLO";

это все еще терпит крах. Однако, если я закомментирую обе строки, это не приведет к сбою.

Таким образом, кажется, что происходит сбой, если я представляю модальное представление, а затем пытаюсь редактировать поля textArray или htmlString моего NSOManagedObject ...

Вот где я представляю вид:

- (void) touchesEnded: (NSSet *) touches withEvent: (UIEvent *) event {
    if(!viewOnly) {
        UITouch *touch = [touches anyObject];
        CGPoint location = [touch locationInView: txtTo];
    location = [touch locationInView: webViewBody];
        if(CGRectContainsPoint(webViewBody.bounds, location)) {
            [editor loadTextArrayString:stringTextArray];
            [self presentModalViewController:editor animated:YES];
        }
    }
}

и где я отклоняю это:

-(void)returnWithTextArray:(NSString *)arrayString HTML:(NSString *)html bgColor:(NSNumber *)numColor {
    [self dismissModalViewControllerAnimated:YES];
    self.stringTextArray = [NSString stringWithFormat:@"%@", arrayString];
    self.stringHTML = [NSString stringWithFormat:@"%@", html];
    self.bgColor = [NSNumber numberWithInt:[numColor intValue]];
    [webViewBody loadHTMLString:self.stringHTML baseURL:[NSURL URLWithString:@""]];
}

Ответы на вопрос(7)

Ваш ответ на вопрос