核心数据保存错误
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 的上下文不同的上下文。以上是关于核心数据保存错误的主要内容,如果未能解决你的问题,请参考以下文章