Subclass.fetchRequest() Swift 3.0, extension not really helping 100%? : <p>according to the new Core Data changes, Xcode generates this subclass for me:</p>

<pre><code>extension Person {

    @nonobjc public class func fetchRequest() -&gt; NSFetchRequest&lt;Person&gt; {
        return NSFetchRequest&lt;Person&gt;(entityName: "Person");
    }

    @NSManaged public var name: String?

}
</code></pre>

<p>then in code I was expecting to have this one line working:</p>

<pre><code>let fr = Person.fetchRequest()
</code></pre>

<p>This line of code above however gives me an error:</p>

<pre><code>"Ambiguous use of 'fetchRequest'
</code></pre>

<p>This fixes the issue:</p>

<pre><code>let fr: NSFetchRequest&lt;Person&gt; = Person.fetchRequest()
</code></pre>

<p>So then, I am confused what is the:</p>

<pre><code>NSFetchRequest&lt;Person&gt;
</code></pre>

<p>in the:</p>

<pre><code>@nonobjc public class func fetchRequest() -&gt; NSFetchRequest&lt;Person&gt; {
</code></pre>

<p>return type doing at all?</p>

<p>Shouldn't the return type allow me not to have to specify the:</p>

<pre><code>NSFetchRequest&lt;Person&gt;
</code></pre>

<p>in the let definition??</p>

<pre><code>let fr: NSFetchRequest&lt;Person&gt; = Person.fetchRequest()
</code></pre>

<p>Can anybody help me understand why it is needed even though it's part of the return type already?</p>
