菜鸟教程小白 发表于 2022-12-12 13:59:25

ios - 多对多核心数据我的例子


                                            <p><p>我对 Core Data 中的多对多关系非常陌生,为了学习它,我创建了一个多对多关系示例,如下图所示。 </p>

<p>下面的代码显示了如何填充和检索数据。如果有人能告诉我这是否是实现多对多关系的正确方法,我将非常感激。</p>

<p> <img src="/image/CI6HU.png" alt="enter image description here"/> </p>

<pre><code>// First Course object
    Course *first = (Course *) [NSEntityDescription
                              insertNewObjectForEntityForName:@&#34;Course&#34;
                              inManagedObjectContext:];
    first.title = @&#34;Core Data for iOS and OS X&#34;;
    first.releaseDate = ;

    // Second Course object
    Course *second = (Course *) [NSEntityDescription
                                 insertNewObjectForEntityForName:@&#34;Course&#34;
                                 inManagedObjectContext:];
    second.title = @&#34;C/C++ Essential Training&#34;;
    second.releaseDate = ;

    // Third Course object
    Course *third = (Course *) [NSEntityDescription
                              insertNewObjectForEntityForName:@&#34;Course&#34;
                              inManagedObjectContext:];
    third.title = @&#34;Java Essential Training&#34;;
    third.releaseDate = ;

    // Fourth Course object
    Course *fourth = (Course *) [NSEntityDescription
                                 insertNewObjectForEntityForName:@&#34;Course&#34;
                                 inManagedObjectContext:];
    fourth.title = @&#34;iOS SDK: Building Apps with MapKit and Core Location&#34;;
    fourth.releaseDate = ;

    // Fifth Course object
    Course *fifth = (Course *) [NSEntityDescription
                              insertNewObjectForEntityForName:@&#34;Course&#34;
                              inManagedObjectContext:];
    fifth.title = @&#34;Cocoa Essential Training&#34;;
    fifth.releaseDate = ;


    // First Lecturer object
    Lecturer *author = (Lecturer *) [NSEntityDescription
                              insertNewObjectForEntityForName:@&#34;Lecturer&#34;
                              inManagedObjectContext:];
    author.name = @&#34;Smith&#34;;
    ;
    ;
    ;

    // Second Lecturer object
    Lecturer *author2 = (Lecturer *) [NSEntityDescription
                                 insertNewObjectForEntityForName:@&#34;Lecturer&#34;
                                 inManagedObjectContext:];
    author2.name = @&#34;John&#34;;
    ;
    ;
    ;
    ;
</code></pre>

<p>这就是我获取特定讲师教授的所有类(class)的方式。</p>

<pre><code>NSPredicate *predicate = ;
      ;

      NSError *error = nil;
      NSArray *fetchedObjects = [ executeFetchRequest:fetchRequest error:&amp;error];
      if (fetchedObjects == nil)
      {
            NSLog(@&#34;Problem! %@&#34;,error);
      }
      NSLog(@&#34;fetch object count %d&#34;, );
      for (Course *c in fetchedObjects)
      {
            NSLog(@&#34; %@&#34;, c.title);
      }
</code></pre>

<p>提前致谢。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您的代码看起来正确,但谓词</p>

<pre><code>
</code></pre>

<p> 太复杂了。您在这里不需要 SUBQUERY。获取所有类(class)
与具有给定名称的讲师相关的,您可以使用</p>

<pre><code>
</code></pre>

<p>或更好</p>

<pre><code>
</code></pre>

<p>因为即使名称包含任何特殊字符,这也有效
比如引号。</p>

<hr/>

<p>如果您需要中间表,请回答您的问题:</p>

<ul>
<li>你的模型是有效的,如果它适合你,你应该使用它(实际上 Core Data 在内部创建了一个中间 SQLite 表)。</li>
<li><p>使用中间表的一个原因</p>

<pre><code> Course &lt;--&gt;&gt;CourseLecturer&lt;&lt;-&gt; Lecturer
</code></pre>

<p>是你可以通过给中间实体添加一个排序键来保持一个讲师的类(class)(以及一个类(class)的讲师)的指定顺序。</p></li>
<li>中间实体的另一个原因是它使之成为可能
显示一个包含所有类(class)和讲师的表格,其中一个部分用于
每门类(class)。</li>
</ul></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 多对多核心数据我的例子,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/28122785/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/28122785/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 多对多核心数据我的例子