任何人都可以解释我如何知道什么操作导致了领域通知触发吗?
我有对象,并且创建有关对象更改的通知。这些对象可以在许多地方进行更新,我想知道它发生的确切位置
答案 0 :(得分:1)
我敢肯定,无法从Realm API中分辨出哪个对象更改导致了通知。
但是,您有一个选择是在对象上创建一个忽略的属性,并在对象上设置一个值,以了解是谁写的。这是一个示例:
//Class definition
class Stuff: Object{
@objc dynamic var whatever = ""
//In memory only
@objc dynamic var blame = ""
override static func ignoredProperties() -> [String] {
return ["blame"]
}
}
然后在代码中的其他地方:
//Place #1 where object is changed
let myObject = Stuff()
myObject.blame = "place1"
//Place #2 where object is changed
let myObject = Stuff()
myObject.blame = "place2"
然后,在您的Realm侦听器中,您可以访问对象的blame
属性以查找更改的位置:
token = myObject.observe { change in
switch change {
case .change(let properties):
for property in properties {
print(property.blame) //<-- This tells you where it changed
}
case .error(let error):
print("An error occurred: \(error)")
case .deleted:
print("The object was deleted.")
}
}
希望这会有所帮助。祝你好运!