title: Default implementation of protocol extension in Swift not working
body: <p>I'm trying to add functionality to an <code>NSManagedObject</code> via a protocol. I added a default implementation which works fine, but as soon as I try to extend my subclass with the protocol it tells me that parts of it are not implemented, even though I added the default implementation.</p>
  
  <p>Anyone having Ideas of what I'm doing wrong?</p>
  
  <pre><code>class Case: NSManagedObject {
  
  }
  
  protocol ObjectByIdFetchable {
      typealias T
      typealias I
      static var idName: String { get }
      static func entityName() -&gt; String
      static func objectWithId(ids:[I], context: NSManagedObjectContext) -&gt; [T]
  }
  
  extension ObjectByIdFetchable where T: NSManagedObject, I: AnyObject {
  
      static func objectWithId(ids:[I], context: NSManagedObjectContext) -&gt; [T] {
         let r = NSFetchRequest(entityName: self.entityName())
         r.predicate = NSPredicate(format: "%K IN %@", idName, ids)
  
         return context.typedFetchRequest(r)
     }
  }
  
  extension Case: ObjectByIdFetchable {
  
     typealias T = Case
     typealias I = Int
  
     class var idName: String {
         return "id"
     }
  
     override class func entityName() -&gt; String {
         return "Case"
     }
  }
  </code></pre>
  
  <p>The error I get is <code>Type Case doesn't conform to protocol ObjectByIdFetchable</code></p>
  
  <p>Help very much appreciated. </p>