【发布时间】:2016-10-12 13:28:07
【问题描述】:
可能有这样的东西。
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 是错误的方式?
【问题讨论】:
标签: ios swift generics core-data swift3