Iphone 核心数据随机崩溃

Iphone 核心数据随机崩溃,iphone,ios,core-data,nsmanagedobjectcontext,Iphone,Ios,Core Data,Nsmanagedobjectcontext,我完成了我的应用程序的开发,但在这一点上,当我试图在核心数据中保存图像时,我面临随机崩溃 以下是控制台消息: CoreData:错误:严重的应用程序错误。异常被捕获 在核心数据更改处理期间。这通常是一个内部错误 NSManagedObjectContextObjectsIDChangeNotification的观察者。 -[\u PFExternalReferenceData compare:]:发送到实例0x94b69b0的无法识别的选择器带有userInfo(null) 问题在于它是不确定的

我完成了我的应用程序的开发,但在这一点上,当我试图在核心数据中保存图像时,我面临随机崩溃

以下是控制台消息:


CoreData:错误:严重的应用程序错误。异常被捕获 在核心数据更改处理期间。这通常是一个内部错误 NSManagedObjectContextObjectsIDChangeNotification的观察者。 -[\u PFExternalReferenceData compare:]:发送到实例0x94b69b0的无法识别的选择器带有userInfo(null)

问题在于它是不确定的。5次中或多或少会发生一次

有人知道我应该去哪里找吗

编辑:

下面是我的类代码,它似乎提出了一个问题。当我单击“保存”按钮调用-(iAction)saveResultingImage时,有时会发生这种情况:

#import "ResultViewController.h"


@interface ResultViewController ()
@property (nonatomic)BOOL resultSaved;
@end

@implementation ResultViewController


#pragma mark - IBActions

- (IBAction)saveResultingImage
{
    UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0.0);
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];

    _resultImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    _resultSaved = [self saveOnCoreData];

    [self performSegueWithIdentifier:@"BackToStartSegue" sender:self];
}

- (IBAction)discardWithoutSaving
{
    [self performSegueWithIdentifier:@"BackToStartSegue" sender:self];
}

- (IBAction)restartDrawing:(id)sender
{
    UIImage *backgroundImage = _subImage;
    UIImageView *imageView =
    [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, backgroundImage.size.width, backgroundImage.size.height)];
    imageView.image = backgroundImage;
    [self.view addSubview:imageView];

    UIImage *maskImage = _maskImage;
    CGRect maskViewRect = CGRectMake(0, 0, maskImage.size.width, maskImage.size.height);
    ImageMaskView *subView = [[ImageMaskView alloc] initWithFrame:maskViewRect image:maskImage];

    [self.view addSubview:subView];
}

- (IBAction)showExplainVC
{
    [self performSegueWithIdentifier:@"ShowInfoSegue" sender:self];
}


#pragma mark - Methods

- (BOOL)saveOnCoreData
{
    NSManagedObjectContext *context = [self managedObjectContext];
    NSManagedObject *newMeme =
            [NSEntityDescription insertNewObjectForEntityForName:@"Meme" inManagedObjectContext:context];
    NSData *toSaveMeme = UIImagePNGRepresentation(_resultImage);
    [newMeme setValue:toSaveMeme forKey:@"image"];

    NSError *error = nil;
    if (![context save:&error]) {
        DebugLog(@"Can't save: %@ %@", error, [error localizedDescription]);
        return NO;
    }
    return YES;
}


#pragma mark - View Controller LifeCycle

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender
{
    if ([identifier isEqualToString:@"BackToStartSegue"]) {
        return _resultSaved;
    }
    return _resultSaved;
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:NO];
    DebugLog(@"Called viewWillAppear");
    self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIBarButtonItem *discardBarButtonItem =
            [[UIBarButtonItem alloc] initWithTitle:@"Discard" style:UIBarButtonItemStylePlain target:self action:@selector(discardWithoutSaving)];
    UIBarButtonItem *saveBarButtonItem =
            [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(saveResultingImage)];
    UIBarButtonItem *infoBarButton =
            [[UIBarButtonItem alloc] initWithTitle:@"How to" style:UIBarButtonItemStylePlain target:self action:@selector(showExplainVC)];
    discardBarButtonItem.style = UIBarButtonItemStyleBordered;
    self.navigationItem.rightBarButtonItems = @[saveBarButtonItem, discardBarButtonItem, infoBarButton];

    self.view.backgroundColor = [UIColor blackColor];

    [self restartDrawing:nil];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


#pragma mark - Core Data Stack

- (NSManagedObjectContext *)managedObjectContext
{
    NSManagedObjectContext *context = nil;
    id delegate = [[UIApplication sharedApplication] delegate];
    if ([delegate performSelector:@selector(managedObjectContext)]) {
        context = [delegate managedObjectContext];
    }
    return context;
}

@end

感谢您表现出兴趣:-)

发布您的代码。。所以,任何人都可以说,要改变什么,你能如何更好地利用它们没有人知道我应该去哪里?我仍然被这个问题困扰着,保存时随机崩溃…只需注释这一行,然后再次运行代码<代码>[self-PerformsgueWithIdentifier:@“BackToStartSegue”发送方:self]我认为您正在执行一些操作,在
视图中执行将出现在
视图控制器中。这可能会引起一个问题。请在尝试后与我联系,并发现仍有一些随机崩溃发生。您好,我在ViewWillAppeal中所做的只是将导航栏设置为可见(因为在上一个viewController中它被设置为不可见),然后将其设置为黑色。当我按下save(保存)按钮时,我会执行该序列,该按钮链接到-(iAction)saveResultingImage,然后调用performSegue。当我点击“放弃”按钮时,我也会调用perform segue,直接进入我的应用程序的第一个屏幕。我对这两个都发表了评论,并玩了我的应用程序。它在第三次崩溃时再次出现以下错误消息:CoreData:error:severy application error。在核心数据更改处理期间捕获异常。这通常是NSManagedObjectContextObjectsIDChangeNotification的观察者中的错误-[\u PFExternalReferenceData compare::]:无法识别的选择器发送到实例0x94cfcfcff0,userInfo(null)2013-07-30 22:10:17.000 MemeGen[43615:c07]***由于未捕获的异常“NSInvalidArgumentException”,终止应用程序,原因:'-[\u PFExternalReferenceData compare:]:发送到实例0x94cfcf0'***第一次抛出调用堆栈的选择器无法识别:(0x1c96012 0x18f1e7e 0x1d214bd。。。