It's possible to have something like this.
public class Request<T: NSFetchRequestResult> : NSManagedObject {
@NSManaged public var id: Int16
@NSManaged public var fetchRequest: NSFetchRequest<T>?
}
...
public class Ticker: NSManagedObject {
}
But I cannot get an actual type, when I called context.insertNewObjectForEntity(forName: "Request")
class func requestForLCMain() -> Request<Ticker>? {
let context = DataManager.sharedInstance.mainContext
let id = RequestId.ticker
let fetchRequest: NSFetchRequest<Request<Ticker>> = Request.fetchRequestFunc()
fetchRequest.predicate = NSPredicate(format: "id = %@", id.rawValue)
fetchRequest.fetchBatchSize = 1
do {
if let request = try context.fetch(fetchRequest).first {
return request
} else {
let newRequest = context.insertNewObjectForEntity(forName: "Request") as? Request<Ticker> // ? returns nil
newRequest.fetchRequest = ... // ?
return newRequest
}
} catch let error {
print(error)
}
return nil
}
Can I do something or it's a wrong way have a generic NSManagedObject
?