私はクラスの拡張でジェネリック関数を作成しようとしているが、私はコンパイラエラーを取得します。スウィフト総称関数
私も、クラスAとBを持って、両方のNSManagedObject
を延長し、私は私のクラスの拡張でfindOne()
関数を作成します。
extension NSManagedObject {
public class func findOne() -> NSManagedObject {
// some working stuff returning a NSManagedObject
}
}
私の問題がある:私はAでこの方法を使用する場合、戻り値の型はNSManagedObject
ので
let aObject = A.findOne //type is NSManagedObject
で、明らかに私はそれをキャストし、Aクラスのオブジェクトに
let aObject = A.findOne as! A//type is NSManagedObject
を得ることができますここで開始
は、私は私が持って作り、ジェネリックを使用するために私の拡張機能の実装を置き換えたい:
extension NSManagedObject {
public class func findOne<T>() -> T {
// some working stuff returning a NSManagedObject
}
}
しかしA.findOne()
はまだNSManagedObject
タイプです: 私はこれを試してみました。
誰でも手伝ってもらえますか?
私が使用している場合、次のコードは、実際に働いている UPDATE:
class func findOne<T : NSManagedObject>() -> T {
//Do some stuff
return myObject as! T
}
let myObject : A = A.findOne()
オブジェクトにキャストするジェネリック型パラメータを使用します。 [私はNSManagedObjectスウィフト拡張の管理対象オブジェクトのサブクラスのインスタンスを作成するにはどうすればよい?]比較 – luk2302
(http://stackoverflow.com/questions/27109268/how-can-i-create-instances-of-managed-object-subclasses- in-a-nsmanagedobject-swi)を使用します。 –
@Alessandro:なぜあなたはタイトルとタグに「OS X」を追加しましたか?私はちょうどのみタグに追加したい、iOSとOSXの両方でコアデータが同様にiOSの上に存在し、この問題の何もOS Xの –