• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 在模拟器中查看核心数据的内容

[复制链接]
菜鸟教程小白 发表于 2022-12-12 03:57:12 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个一对多的 CoreData 模型。有任务列表和属于任务列表的任务。我的问题是,每当我创建一个新任务时,也会创建一个任务列表。

“new tasklist”是db中name字段的默认值。 “新任务列表”是 View 在创建新任务时存储的值。可以看出,每创建一个task,就会自动创建一个默认name值的tasklist。

问题 这是它应该看起来的样子吗?如果是这样,我如何进行查询以仅选择 Z_ENT = 1 的任务列表名称(那些是 parent ,对吗?) 如果这看起来很错误,我该如何正确插入东西。我认为我的表关系是正确的 - 但如果这可能是问题,我会发布屏幕截图。

模型图 enter image description here

我的代码

选择列表时:

    NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:indexPath];
    TaskViewController *taskViewController = [[TaskViewController alloc] init];
    taskViewController.managedObjectContext = [self.fetchedResultsController managedObjectContext];
    taskViewController.tasklist = managedObject;

在 TaskViewController 中,我得到这样的 fetchedResultsController:

    NSPredicate *predicate = [NSPredicate predicateWithFormat:
                              @"(tasklistOfTask == %@)", tasklist];
    [fetchRequest setPredicate: predicate];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName"Root"];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;

然后插入,

   NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
    NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];
    NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];

    [newManagedObject setValue"dummy" forKey"task"]; 
    [newManagedObject setValue:tasklist forKey"tasklistOfTask"];

managedobjectcontext 是从 AppDelegate 传入的。



Best Answer-推荐答案


您已在 Tasks 和 Tasklists 之间创建了继承关系,因此每个任务也是一个任务列表,并且两个实体都存储在同一个表中。我建议删除它并更改您的模型,使其看起来像

this

如果您还没有从您的模型生成托管对象类,那么您的代码将类似于:

   NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:indexPath];
    TaskViewController *taskViewController = [[TaskViewController alloc] init];
    taskViewController.managedObjectContext = [self.fetchedResultsController managedObjectContext];
    taskViewController.tasklist = managedObject;

    NSPredicate *predicate = [NSPredicate predicateWithFormat:
                              @"(tasklist == %@)", tasklist];
    [fetchRequest setPredicate: predicate];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName"Root"];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;

   NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
    NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];
    Task *newTask = (Task *)[NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
    newTask.taskName = @"dummy";
    newTask.number = [NSNumber numberWithInteger:[tasklist.tasks count] + 1];
    newTask.tasklist = tasklist;

关于ios - 在模拟器中查看核心数据的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10371177/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap