gpt4 book ai didi

ios - 访问/创建 IOS 的核心数据 slqlite 数据库失败 - 找不到实体(创建空数据库)

转载 作者:行者123 更新时间:2023-11-29 04:33:09 25 4
gpt4 key购买 nike

嗨,我是 IOS 的初学者,并且创建了我的第一个核心数据应用程序。我已经创建了我的模式并将其包含在项目中。它确实包含实体“客户端”。当我使用以下测试代码创建数据库并尝试添加实体时,出现以下错误

..'+entityForName:无法找到实体名称“ItemMake”的 NSManagedObjectModel

调用 [NSEntityDescription insertNewObjectForEntityForName:@"Client"inManagedObjectContext:contxt] 时;

我已经检查了我能想到的一切,代码如下所示。这是一些进一步的信息...

a) mdl 和 contxt 不为零。

b) 在模拟器中创建数据库文件 (16kb)

c) 从另一个工具访问数据库仅显示两个表,这两个表似乎是 SQLlite 系统表

d) 该软件包确实包含“EasyOrder.momd”目录和“EasyOrder.mom”文件。该应用程序名为“EasyOrder”。

e) 该项目包含一个“EasyOrder.xcdatamodeld”文件,其中定义了一个客户端实体(以及其他实体)。

f)我在数据库中尝试了其他实体,得到了相同的结果

g) 我的应用程序是一个标准应用程序,我也添加了核心数据支持。我没有在应用程序委托(delegate)中使用默认代码,但我的示例也没有使用。

代码如下

NSManagedObjectContext *contxt;
NSManagedObjectModel *mdl;
NSPersistentStoreCoordinator *ps;

mdl = [NSManagedObjectModel mergedModelFromBundles:nil];
ps = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:mdl];


NSArray *documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *docDir = [documentDirectories objectAtIndex:0];

NSString *dbLoc = [docDir stringByAppendingPathComponent:@"test.sqllite"];

NSURL *databaseUrl = [NSURL fileURLWithPath:dbLoc];

NSError *err;

if ([ps addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:databaseUrl
options:nil
error:&err] == false) {
NSLog(@"%@", err);
}

[contxt setUndoManager:nil];



//Add record

//这里崩溃了!

Client *c = [NSEntityDescription insertNewObjectForEntityForName:@"Client" inManagedObjectContext:contxt];


[c setEntityRef:1234];

...

蒂亚罗布

最佳答案

我刚刚解决了这个问题。我相信存在某种版本控制问题,其中使用的数据模型很旧且不包含表。

我使用虚拟模型(只有一张表)创建了一个测试应用程序,并且运行良好。然后我删除了该模型并使用了实际应用程序中的模型。它继续正常工作,但没有根据数据模型创建表。因此,我从模拟器中删除了运行时,然后它正确创建了所有表。

我在实际应用程序中遵循了相同的过程,从模拟器中删除,删除模型,添加具有不同名称的模型并重新构建。应用程序现在可以运行了!

关于ios - 访问/创建 IOS 的核心数据 slqlite 数据库失败 - 找不到实体(创建空数据库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11423753/

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