gpt4 book ai didi

ios - 获取核心数据时出现错误

转载 作者:行者123 更新时间:2023-12-01 22:49:39 25 4
gpt4 key购买 nike

我是核心数据新手,我一直在尝试获取我创建的实体,但我不断收到向我抛出的错误消息。

错误如下:

CoreData: error: -addPersistentStoreWithType:SQLite configuration:(null) URL:file:///var/mobile/Containers/Data/Application/4A0BBC17-674F-4A5D-80F7-72174D71B95F/Documents/Todogorithm.sqlite options:(null) ... returned error Error Domain=NSCocoaErrorDomain Code=134100 "The managed object model version used to open the persistent store is incompatible with the one that was used to create the persistent store." UserInfo={metadata={
NSPersistenceFrameworkVersion = 641;
NSStoreModelVersionHashes = {
Task = <3db44fe3 d21215ef eee9476a ae204647 b49829de 00b4784c 7715b5ff a252dcab>;
};
NSStoreModelVersionHashesVersion = 3;
NSStoreModelVersionIdentifiers = (
""
);
NSStoreType = SQLite;
NSStoreUUID = "DFB8723E-7D5B-44A0-AFB9-E9E0F7E39E85";
"_NSAutoVacuumLevel" = 2;
}, reason=The model used to open the store is incompatible with the one used to create the store} with userInfo dictionary {
metadata = {
NSPersistenceFrameworkVersion = 641;
NSStoreModelVersionHashes = {
Task = <3db44fe3 d21215ef eee9476a ae204647 b49829de 00b4784c 7715b5ff a252dcab>;
};
NSStoreModelVersionHashesVersion = 3;
NSStoreModelVersionIdentifiers = (
""
);
NSStoreType = SQLite;
NSStoreUUID = "DFB8723E-7D5B-44A0-AFB9-E9E0F7E39E85";
"_NSAutoVacuumLevel" = 2;
};
reason = "The model used to open the store is incompatible with the one used to create the store";
}

调用 View Controller 上的 viewDidAppear 时会引发错误。这是我的 viewDidAppear: [ super viewDidAppear:动画];

AppDelegate *appDelegate = [[AppDelegate alloc] init];

NSManagedObjectContext *context = [appDelegate managedObjectContext];

NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Task"];
_results = [context executeFetchRequest:request error:nil];

那里的代码调用我的appDelegate中的managedObjectContext,并在该方法中调用persistentStoreCoordinator方法(这是实际抛出错误的地方)。 AppDelegate.m 中的两个方法如下:

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
// The persistent store coordinator for the application. This implementation creates and returns a coordinator, having added the store for the application to it.
if (_persistentStoreCoordinator != nil) {
return _persistentStoreCoordinator;
}

// Create the coordinator and store

_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"Todogorithm.sqlite"];
NSError *error = nil;
NSString *failureReason = @"There was an error creating or loading the application's saved data.";
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {
// Report any error we got.
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[NSLocalizedDescriptionKey] = @"Failed to initialize the application's saved data";
dict[NSLocalizedFailureReasonErrorKey] = failureReason;
dict[NSUnderlyingErrorKey] = error;
error = [NSError errorWithDomain:@"YOUR_ERROR_DOMAIN" code:9999 userInfo:dict];
// Replace this with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}

return _persistentStoreCoordinator;
}


- (NSManagedObjectContext *)managedObjectContext {
// Returns the managed object context for the application (which is already bound to the persistent store coordinator for the application.)
if (_managedObjectContext != nil) {
return _managedObjectContext;
}

NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (!coordinator) {
return nil;
}
_managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
[_managedObjectContext setPersistentStoreCoordinator:coordinator];

关于为什么调用 persistentStoreCoordinator 中的错误有什么想法吗?

最佳答案

您可能在 Xcode 中更改了托管对象模型,但您仍然使用旧的数据模型配置在设备/模拟器上安装了应用程序。

这就是您收到此错误的原因。如果您的应用程序是全新的,并且您不必担心与已安装的应用程序的兼容性,则只需从设备/模拟器中删除旧应用程序并安装新应用程序即可。

如果您需要保持旧数据模型配置与新数据模型配置的兼容性,则应使用模型的版本控制并在新数据模型版本中进行所有更改。

关于ios - 获取核心数据时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36107488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com