title: Swift + CoreData: Can not set a Bool on NSManagedObject subclass - Bug?
body: <p>I have a little strange issue which I can't seem to figure out, I have a simple entity with a custom NSManagedObject subclass:</p>
  
  <pre><code>@objc(EntityTest) class EntityTest: NSManagedObject {
  
      @NSManaged var crDate: NSDate
      @NSManaged var name: String
      @NSManaged var completed: Bool
      @NSManaged var completedOn: NSDate
  }
  </code></pre>
  
  <p>This is the problem, I can create the object fine and set the all the values and store in in an array. However late on, when I try to retrieve the same object, I can set all the values EXCEPT the "completed" field. I get a run-time error saying "EXC_BAD_ACCESS", I can read the value, just can not set it.</p>
  
  <p>The debugger points to:</p>
  
  <pre><code>0x32d40ae:  je     0x32d4110                 ; objc_msgSend + 108
  0x32d40b0:  movl   (%eax), %edx
  </code></pre>
  
  <p>Maybe some issues due to it being treated as an Objective-C class and trying to send a message to set boolean which I know is a bit funny with CoreData originally representing them as NSNumbers.</p>
  
  <p>Any ideas? I created the class myself, it is not generated.</p>
  
  <p>EDIT:</p>
  
  <pre><code>entity.crDate = NSDate() // succeeds
  entity.completed = false // fails
  entity.completed.setValue(false, forKey: "completed") //succeeds
  </code></pre>
  
  <p>So for setting the bool, using the setValue of NSManagedObject works but not the direct setters, though for the non-bool properties, I can set it using the setters.</p>
  
  <p>UPDATE:</p>
  
  <p>While checking this a bit more, it seems like the first time I set the value after getting from NSEntityDescription, it uses normal Swift accessor methods. Later on when I try to access the same object (which was stored in an array) it attempts to treat it as a Objective-C style object and sends a message for method named "setCompleted". I guess it makes sense since I use the dot notation to access it and I used the @objc directive.</p>
  
  <p>I tested this by creating a "setCompleted" method, however in the method I set the value using "completed = newValue" which makes a recursive call back to "setCompleted" causing it to crash... Strange, so at this moment still can't don't have a proper fix. It seems to only happen with Bools.</p>
  
  <p>Only workaround is use the "setValueForKey" method of NSManagedObject. Perhaps file this as a bug report?</p>