Open
Description
Follow up to #22 by @HealsCodes:
I've been playing around with Predicates + ManagedModels but always run into a dead-end seemingly because Model properties aren't exposed to the underlying Objective-C runtime so code like this doesn't work:
@Model
final class MyModel: NSManagedObject {
var enabled: Bool
convenience init() {
self.enabled = false
}
}
// the following works if MyModel is created using the traditional NSManagedObject / @NSManaged means
let p = #Predicate<MyModel> { $0.enabled == true }
let predicate = NSPredicate(p) // returns nil, because apparently MyModel.enabled isn't bridged
Likewise a simple NSExpression(forKeyPath: \MyModel.enabled)
fails with "Foundation/NSObject.swift:132: Fatal error: Could not extract a String from KeyPath \MyModel.enabled"
The same issue breaks interoperability with packages like PredicateKit which relies on being able to convert AnyKeyPath
to String
using ObjC bridging internals.