1

当我将用户传递的信息保存在 detailTableViewController 中时,我遇到了一个错误。虽然当我通过按讲座强制调试器时,它会继续执行 coredata 作业等。

这是我的结构:一个detailTableViewController,它呈现用户填充然后传递给核心数据的静态单元格。它为 MainTableViewController 实现了一个委托来弹出它。

PhraseDetailTableViewController.h:

 #import <UIKit/UIKit.h>
 #import "Phrase.h"

 @class PhraseDetailTableViewController;

 @protocol AddPhraseTVCDelegate
   - (void) theSaveButtonOnThePhraseDetailWasTapped:(PhraseDetailTableViewController *) controller;
 @end


 @interface PhraseDetailTableViewController : UITableViewController

   @property (strong,nonatomic) NSManagedObjectContext *managedObjectContext;
   @property (nonatomic,weak) id <AddPhraseTVCDelegate> delegate;
   @property (strong, nonatomic) IBOutlet UITextField *phraseMotivationTextField;

   - (IBAction)save:(id)sender;

 @end

PhraseDetailTableViewController.m :

- (void)save:(id)sender
{
  NSLog(@"Telling the PhraseDetailTableViewController Delegate that Save was tapped on the PhraseDetailTableViewController");

  Phrase *phrase = [NSEntityDescription insertNewObjectForEntityForName:@"Phrase" inManagedObjectContext:self.managedObjectContext];
  phrase.motivation = phraseMotivationTextField.text;

  NSLog(@"la phrase est %@", phrase.motivation);

  [self.managedObjectContext save:nil];


  [self.delegate theSaveButtonOnThePhraseDetailWasTapped:self];
  NSLog(@"le message savebuttononethe.. a ete envoyé");
}

我把它委托给主要的,这里是 .H 和 .m

PhraseTableViewController.h :

#import <UIKit/UIKit.h>
#import "PhraseDetailTableViewController.h"
#import "CoreDataTableViewController.h"
#import "Phrase.h"


@interface PhraseTableViewController : CoreDataTableViewController <AddPhraseTVCDelegate>

    @property (strong,nonatomic) NSFetchedResultsController *fetchedResultsController;
    @property (strong,nonatomic) NSManagedObjectContext *managedObjectContext;

@end

PhraseTableViewController.m(提取我传递委托并接收委托方法的位置):

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
  if([segue.identifier isEqualToString:@"Add Phrase Segue"])
  {
     NSLog(@"Seeting PhraseTVC as a delegate of PhraseDetailTableViewController");

     PhraseDetailTableViewController *phraseDetailTableViewController= segue.destinationViewController;
     phraseDetailTableViewController.delegate=self;
     phraseDetailTableViewController.managedObjectContext=self.managedObjectContext;
  }
}


- (void)theSaveButtonOnThePhraseDetailWasTapped:(PhraseDetailTableViewController *)controller
{
  [controller.navigationController popViewControllerAnimated:YES];
  NSLog(@"c'est la methode en elle meme qui chie");
}

我认为这与 Main/detail 的子类化及其继承的委托有关。但我无法弄清楚这个错误到底意味着什么:s

干杯,路易斯

4

0 回答 0