title: Swift Array.contains() doesn't call Equatable function of PFUser subclass
body: <p>I have a subclass of <strong>PFUser</strong> - <strong>MYUser</strong> class with implementation of <strong>Equatable</strong> function for comparing objectIds this way:</p>
  
  <pre><code>func ==(left: MYUser, right: MYUser) -&gt; Bool {
      return left.objectId == right.objectId
  }
  </code></pre>
  
  <p>But when I call Array.contains() method it doesn't call this implementation of <strong>Equatable</strong> function, that leads to incorrect results. For instance, here: </p>
  
  <pre><code>let hasUser = self.selectedUsers.contains(currentUser)
  </code></pre>
  
  <p><strong>hasUser</strong> becomes <strong>false</strong> if <strong>selectedUsers</strong> array contains different memory object but with the same objectId as in <strong>currentUser</strong>.</p>
  
  <p>What interesting, <strong>Equatable</strong> function implementation is called in direct usage. Here:</p>
  
  <pre><code>var hasUser = false
  for itUser in self.selectedUsers {
    if itUser == currentUser {
      hasUser = true
      break
    }
  }
  </code></pre>
  
  <p><strong>==</strong> operator successfully was called and <strong>hasUser</strong> has correct values for different memory objects but with the same objectId</p>
  
  <p>What can be the cause of it? </p>
  
  <p>UPDATE. 
  Here is MYUser class:</p>
  
  <pre><code>class MYUser: PFUser {
  
      // MARK: - Parse Object
  
      @NSManaged var avatarFile: PFFile?
      @NSManaged var fullName: String?
  
      // MARK: - PFSubclassing Methods (through PFUser)
  
      override class func initialize() {
          struct Static {
              static var onceToken : dispatch_once_t = 0;
          }
          dispatch_once(&amp;Static.onceToken) {
              self.registerSubclass()
          }
      }
  }
  
  func ==(left: MYUser, right: MYUser) -&gt; Bool {
      return left.objectId == right.objectId
  }
  </code></pre>