核心数据保存错误

Posted

技术标签:

【中文标题】核心数据保存错误【英文标题】:Core Data Saving Error 【发布时间】:2011-02-13 18:39:37 【问题描述】:

我正在尝试将一些数据从不同的视图保存到核心数据,当我按下按钮保存数据时,我一直收到错误消息。我得到的是:

Unresolved error (null), (null)

这是我所有的代码:

SomeViewController.h

#import <UIKit/UIKit.h>
@class NameData;
@interface SomeViewController : UIViewController <NSFetchedResultsControllerDelegate> 
    NSFetchedResultsController *fetchedResultsController;
    NSManagedObjectContext* managedObjectContext;
    NameData *nameData;

@property (nonatomic,retain) NSFetchedResultsController *fetchedResultsController;
@property (nonatomic,retain) NSManagedObjectContext* managedObjectContext;
@property (nonatomic,retain) NameData *nameData;

- (IBAction)saveData;

@end

SomeViewController.m

#import "SomeViewController.h"
#import  "NameData"

@implementation SomeViewController

@synthesize addTeam;

- (void)viewDidLoad 
    [super viewDidLoad];
    self.title = @"Add Name;



- (IBAction)saveData

    NSString *string = @"demo";

    nameData.nameContent = string;
    nameData.name2Content = string;
    nameData.name3Content = string;


    NSError *error = nil;
    if (![nameData.managedObjectContext save:&error]) 
        // Handle error
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();  // Fail
       

- (void)didReceiveMemoryWarning 
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.


- (void)viewDidUnload 
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;



- (void)dealloc 
    [nameData release];

@end

名称数据.h

#import <CoreData/CoreData.h>


@interface NameData :  NSManagedObject  



@property (nonatomic, retain) NSString * nameContent;
@property (nonatomic, retain) NSString * name2Content;
@property (nonatomic, retain) NSString * name3Content;
@end

名称数据.m

#import "NameData"

@implementation NameData

@dynamic nameContent;
@dynamic name2Content;
@dynamic name3Content;
@end

【问题讨论】:

显示错误是什么会很有帮助。 确实如此。将您的 NSLog 更改为:NSLog(@"Unresolved error %@, %@", error, [error localizedDescription]);. 它在最顶部:错误是“未解决的错误(null),(null)”并且应用程序关闭。 @lxt,我改成你说的还是一样的错误:Unresolved error (null), (null) 【参考方案1】:

应在 managedObjectContext 实例上执行保存,而不是模型本身。

例子:

NSError *error;
NSManagedObjectContext *moc = [self.fetchedResultsController managedObjectContext];
if (![moc save:&error]) 
    NSLog(@"Failed to save to data store: %@ - %@", 
          [error localizedDescription], [error userInfo]);

【讨论】:

使用您的代码时,应用程序崩溃,但调试器没有任何错误。嗯.... idk 为什么要这样做。 发布的代码 sn-p 并不是一个复制/粘贴解决方案。在您的代码中,您正在通过您的 namedData 实例访问 managedObjectContext 类。通常通过控制器访问 managedObjectContext,如我的示例所示。希望这更有意义。 在 namedData 的 managedObjectContext 引用上执行此操作实际上更安全,因为它可能(不太可能,但可能)是与用于 fetchedResultsController 的上下文不同的上下文。

以上是关于核心数据保存错误的主要内容,如果未能解决你的问题,请参考以下文章

核心数据保存日期错误

核心数据关系在删除后导致保存错误

核心数据保存竞争条件错误

尝试将纬度和经度保存到核心数据会导致访问错误

无法保存核心数据

NSManagedObject 保存在核心数据中但属性错误