Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 是什么导致了域通知_Ios_Swift_Realm - Fatal编程技术网

Ios 是什么导致了域通知

Ios 是什么导致了域通知,ios,swift,realm,Ios,Swift,Realm,谁能解释一下我怎么知道是什么操作导致了我的领域通知触发 我有对象,我创建对象更改的通知。这些对象可以从许多地方更新,我想知道它发生的确切地点我很确定,从领域API中无法判断是哪个对象更改导致了通知 但是,您可以选择在对象上创建一个被忽略的属性,并在对象上设置一个值,以了解是谁写入了该属性。下面是一个例子: //Class definition class Stuff: Object{ @objc dynamic var whatever = "" //In memory only

谁能解释一下我怎么知道是什么操作导致了我的领域通知触发


我有对象,我创建对象更改的通知。这些对象可以从许多地方更新,我想知道它发生的确切地点

我很确定,从领域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"
然后在您的领域侦听器中,您可以访问对象的
bull
属性,以找出更改的位置:

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.")
  }
}
token=myObject.observe{
开关变换{
案例。更改(让属性):
对于属性中的属性{

print(property.dull)//我不知道领域通知,但通常你可以发送一些用户信息或id以及通知,让接收者在需要时使用。