菜鸟教程小白 发表于 2022-12-12 03:57:12

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


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

<p> <img src="/image/IDawF.png" alt=""/> </p>

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

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

<p><strong>模型图</strong>
<img src="/image/0kcva.png" alt="enter image description here"/> </p>

<p><strong>我的代码</strong></p>

<p>选择列表时:</p>

<pre><code>    NSManagedObject *managedObject = ;
    TaskViewController *taskViewController = [ init];
    taskViewController.managedObjectContext = ;
    taskViewController.tasklist = managedObject;
</code></pre>

<p>在 TaskViewController 中,我得到这样的 fetchedResultsController:</p>

<pre><code>    NSPredicate *predicate = [NSPredicate predicateWithFormat:
                              @&#34;(tasklistOfTask == %@)&#34;, tasklist];
    ;
NSFetchedResultsController *aFetchedResultsController = [ initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@&#34;Root&#34;];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
</code></pre>

<p>然后插入,</p>

<pre><code>   NSManagedObjectContext *context = ;
    NSEntityDescription *entity = [ entity];
    NSManagedObject *newManagedObject = inManagedObjectContext:context];

    ;
    ;
</code></pre>

<p>managedobjectcontext 是从 AppDelegate 传入的。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您已在 Tasks 和 Tasklists 之间创建了继承关系,因此每个任务也是一个任务列表,并且两个实体都存储在同一个表中。我建议删除它并更改您的模型,使其看起来像</p>

<p> <img src="/image/fNac5.png" alt="this"/> </p>

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

<pre><code>   NSManagedObject *managedObject = ;
    TaskViewController *taskViewController = [ init];
    taskViewController.managedObjectContext = ;
    taskViewController.tasklist = managedObject;

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

   NSManagedObjectContext *context = ;
    NSEntityDescription *entity = [ entity];
    Task *newTask = (Task *) inManagedObjectContext:context];
    newTask.taskName = @&#34;dummy&#34;;
    newTask.number = + 1];
    newTask.tasklist = tasklist;
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在模拟器中查看核心数据的内容,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/10371177/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/10371177/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在模拟器中查看核心数据的内容