2016-10-12 2 views
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がありますか?

答えて

0

これをチェックアウトしてくださいanswer私はあなたが達成しようとしていることを正確に述べていると思います。

+2

私が求めているのではない –

関連する問題