0
このようなことが可能です。汎用オブジェクトのようなNSManagedObject
public class Request<T: NSFetchRequestResult> : NSManagedObject {
@NSManaged public var id: Int16
@NSManaged public var fetchRequest: NSFetchRequest<T>?
}
...
public class Ticker: NSManagedObject {
}
しかし、私は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
}
を呼び出したときに、私は、実際の型を取得することはできませんが、私は何かを行うことができますか、それは間違った方法ですジェネリックNSManagedObject
がありますか?
私が求めているのではない –