ObjectManager
というクラスがあり、ジェネリックタイプはO: Object, Persistable
です。このようにして、領域の複数の異なるサブクラスで動作できる1つのクラスを持つことができます。しかし、問題は、エラーがあるcache = O(message: "hello world")
最後の行にある:コールで不正な引数のラベルが(持っている「というメッセージ:」、期待「の値:」)ジェネリック型のクラス内のRealmオブジェクトでカスタムイニシャライザを使用するにはどうすればよいですか?
入力し、それは私がPersistable
プロトコルの初期化子を使用することができることを私に示唆コンパイル中にObject
クラスのイニシャライザを期待していると不平を言っています。持続可能な初期化子をキャストすることは可能ですか?
protocol Persistable {
init(message: String)
}
class CustomObject: Object, Persistable {
dynamic var message: String = ""
required convenience init(message: String) {
self.init()
self.message = message
}
}
class ObjectManager<O>: NSObject where O: Object, O: Persistable {
var cache: O?
func didReceive(message: String) {
cache = O(message: "hello world")
}
}
うーん、私は右のそれを作る場合は知らないが、そのようにそれを入れ、doesntの仕事 'finalクラスのCustomObject:Object'制約:オブジェクト、永続{ }' –
ああ、私は 'Oを変更していました'O:CustomObject'に変更し、それを元に戻しません。この場合、初期化子を静的なファクトリメソッド(例えば、 'Persistable {static func factory(message:String) - > Self}')で置き換えることができます。これは、イニシャライザのバージョンが失敗した場合でも正しく動作します。 – AustinZ
これは、ありがとう、ありがとう。多分あなたは答えを更新することができます。 –