如何解决 Realm 对象观察器的泛型问题?
Posted
技术标签:
【中文标题】如何解决 Realm 对象观察器的泛型问题?【英文标题】:How do I resolve the generic for Realm's object observer? 【发布时间】:2021-12-17 01:17:03 【问题描述】:我已经在 Realm 中实现了一个对象观察器...
let contactObserver: NotificationToken = contact.observe change in
switch change
case .change(let object, _):
guard let contact = object as? Contact,
...
观察者工作正常。但是您会注意到,在.change
的情况下,我将关联对象转换为其实际类型Contact
。如果可能的话,我想避免这种情况。
我注意到observe
是一个泛型...
func observe<T>(keyPaths: [String]? = nil, on queue: DispatchQueue? = nil, _ block: @escaping (ObjectChange<T>) -> Void) -> NotificationToken where T : RLMObjectBase
我对@987654326@ 感到特别困惑。在这种情况下如何解决泛型?
【问题讨论】:
【参考方案1】:在声明闭包参数时指定泛型约束的类型:
let contactObserver: NotificationToken = contact.observe (change: ObjectChange<Contact>) in
switch change
case .change(let object, let changes):
print("change: \(object): \(changes)")
case .deleted:
print("deleted")
case .error(let error):
print("error: \(error)")
.change
案例中的关联值现在是 Contact
。
【讨论】:
以上是关于如何解决 Realm 对象观察器的泛型问题?的主要内容,如果未能解决你的问题,请参考以下文章