iphone - 核心数据持久性, Unresolved 错误

标签 iphone ios core-data persistence

使用书籍教程,其他 3 种持久性方法完美无缺。运行模拟器时收到此消息:

2012-06-01 23:50:52.555 Core Data Persistence[9022:fb03] Unresolved error Error Domain=NSCocoaErrorDomain Code=134100 "The operation couldn’t be completed. (Cocoa error 134100.)" UserInfo=0x6b92af0 {metadata={type = immutable dict, count = 7, entries => 2 : {contents = "NSStoreModelVersionIdentifiers"} = {type = immutable, count = 1, values = ( 0 : {contents = ""} )} 4 : {contents = "NSPersistenceFrameworkVersion"} = {value = +386, type = kCFNumberSInt64Type} 6 : {contents = "NSStoreModelVersionHashes"} = {type = immutable dict, count = 1, entries => 1 : {contents = "Line"} = {length = 32, capacity = 32, bytes = 0x03913bef8e6d277b9119a99fbc7b4adc ... 39db5d5f94ed5507} } 7 : {contents = "NSStoreUUID"} = {contents = "FE367DDA-4009-4CD1-9B8A-D62943668E8E"} 8 : {contents = "NSStoreType"} = {contents = "SQLite"} 9 : {contents = "_NSAutoVacuumLevel"} = {contents = "2"} 10 : {contents = "NSStoreModelVersionHashesVersion"} = {value = +3, type = kCFNumberSInt32Type} } , reason=The model used to open the store is incompatible with the one used to create the store}, { metadata = { NSPersistenceFrameworkVersion = 386; NSStoreModelVersionHashes = { Line = <03913bef 8e6d277b 9119a99f bc7b4adc 4fec730a 73b61247 39db5d5f 94ed5507>; }; NSStoreModelVersionHashesVersion = 3; NSStoreModelVersionIdentifiers = ( "" ); NSStoreType = SQLite; NSStoreUUID = "FE367DDA-4009-4CD1-9B8A-D62943668E8E"; "_NSAutoVacuumLevel" = 2; }; reason = "The model used to open the store is incompatible with the one used to create the store"; }

我的两个实体都已正确设置,这是我的文件:

#import "BIDViewController.h"
#import "BIDAppDelegate.h"

@interface BIDViewController ()

@end

@implementation BIDViewController
@synthesize line1;
@synthesize line2;
@synthesize line3;
@synthesize line4;

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

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    BIDAppDelegate *appDelegate = 
    [[UIApplication sharedApplication] delegate];
    NSManagedObjectContext *context = [appDelegate managedObjectContext];
    NSEntityDescription *entityDescription = [NSEntityDescription
                                              entityForName:@"Line"
                                              inManagedObjectContext:context];
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setEntity:entityDescription];

    NSError *error;
    NSArray *objects = [context executeFetchRequest:request error:&error];
    if (objects == nil) {
        NSLog(@"There was an error!");
        // Do whatever error handling is appropriate
    }

    for (NSManagedObject *oneObject in objects) {
        NSNumber *lineNum = [oneObject valueForKey:@"lineNum"];
        NSString *lineText = [oneObject valueForKey:@"lineText"];

        NSString *fieldName = [NSString
                               stringWithFormat:@"line%d", [lineNum integerValue]];
        UITextField *theField = [self valueForKey:fieldName];
        theField.text = lineText;
    }

UIApplication *app = [UIApplication sharedApplication];
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(applicationWillResignActive:) 
                                             name:UIApplicationWillResignActiveNotification
                                           object:app];
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
    self.line1 = nil;
    self.line2 = nil;
    self.line3 = nil;
    self.line4 = nil;


}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

-(void)applicationWillResignActive:(NSNotification *) notification {
    BIDAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
    NSManagedObjectContext *context = [appDelegate managedObjectContext];
    NSError *error;
    for (int i = 1; i <=4; i++) {
        NSString *fieldName = [NSString stringWithFormat:@"line%d", i];
        UITextField *theField = [self valueForKey:fieldName];

        NSFetchRequest *request = [[NSFetchRequest alloc] init];

        NSEntityDescription *entityDescription = [NSEntityDescription
                                                  entityForName:@"Line"
                                                  inManagedObjectContext:context];
        [request setEntity:entityDescription];
        NSPredicate *pred = [NSPredicate
                             predicateWithFormat:@"(lineNum = %d)", i];
        [request setPredicate:pred];

        NSManagedObject *theLine = nil;

        NSArray *objects = [context executeFetchRequest:request
                                                  error:&error];

        if (objects == nil) {
            NSLog(@"There was an error!");
            // Do whatever error handling is appropriate
        }

        if ([objects count] > 0)
            theLine = [objects objectAtIndex:0];
        else 
            theLine = [NSEntityDescription
                       insertNewObjectForEntityForName:@"Line"
                       inManagedObjectContext:context];

        [theLine setValue:[NSNumber numberWithInt:i] forKey:@"lineNum"];
        [theLine setValue:theField.text forKey:@"lineText"];
    }
    [context save:&error];
}

@end

如有任何想法或意见,我们将不胜感激!

最佳答案

我猜您在最初在模拟器中安装应用后更改了核心数据模型。

reason=用于打开商店的模型与用于创建商店的模型不兼容

您是否尝试删除并重新安装应用程序?

关于iphone - 核心数据持久性, Unresolved 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10859676/

相关文章:

iphone - Cocoa 核心数据 - 高效相关实体计数

iPhone:内存不足崩溃

iphone - 音频将使 AVCaptureSession 终止

ios - 如何检查设备是否通过airplay连接?

ios - 在 CoreData 中创建实例

ios - 如何从 NotificationServiceExtension 将远程通知数据保存到核心数据(数据库)中

ios - MKMapView:如何将 MKUserLocationView(蓝点)置于最前面?

ios - 自定义标题与组中的单元格重叠

iphone - iOS:在 IBAction 声明中包含发件人?

ios - 如何获取 HKWorkoutActivityType 的字符串描述?