【问题标题】: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)

标签: iphone objective-c cocoa-touch core-data ios4


【解决方案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 的上下文不同的上下文。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多