removeObserver,addObserver,NSPredicate,PFQuery是什么?

时间:2015-06-30 21:17:45

标签: swift nspredicate pfquery

好的我有一些关于在我刚刚下载的快速应用程序中调用的函数的问题

1)什么是addObserver和removeObserver。什么是观察者。

   NSNotificationCenter.defaultCenter().addObserver(self, selector: "displayPushMessage:", name: "displayMessage", object: nil)**

//}

  NSNotificationCenter.defaultCenter().removeObserver(self, name: "displayMessage", object: nil)

2)什么是NSPredicate ???

           let pred = NSPredicate(format: "user1 = %@ OR user2 = %@", PFUser.currentUser(), PFUser.currentUser())



    3) //what is PFQuery???





    let roomQuery = PFQuery(className: "Room", predicate: pred)

    roomQuery.orderByDescending("lastUpdate")

    roomQuery.includeKey("user1")

    roomQuery.includeKey("user2")

1 个答案:

答案 0 :(得分:0)

添加和删除Observer实际上是你得到的设计模式"默认情况下"在迅速。他们听取特定事件,然后通知听众(观察者)该变化。例如,看看你的例子:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "displayPushMessage:", name: "displayMessage", object: nil)

这将在通知中心创建观察员。实际观察者是设置此特定观察者的对象(例如,视图控制器)。该观察者必须使用NSNotification参数实现displayPushMessage。在通知此观察者发生了某事后,将调用此方法。 NSNotification包含object,您可以将其转换为您自己的对象,以及您将使用特定数据发送的对象。您还可以设置观察者的名称。

以下是使用某个对象发送带有通知的数据的示例。让ObserverExample成为您的自定义类,并希望该对象发送到通知。然后你将有一个名为sendNotification或post或者其他方法。在该方法中使用此:

NSNotificationCenter.defaultCenter().postNotificationName("Hello", object: self)

接受此操作的方法看起来像

func displayPushMessage:(notification:NSNotification){
    var myObject = notification.object as! ObserverExample!
}

然后,您可以从myObject中提取所需的数据,即ObserverExample类。

删除观察者方法用于在您完成某些逻辑后从通知中心删除观察者,或者您不想听取它,或者无论您删除它的原因是什么。

NSPredicate用于过滤,排序或从数据集中获取特定数据。可以与数组,字典,CoreData等一起使用。你可以找到很多关于这个的例子,这里有一个能用特定id获取对象的例子:

var predicate = NSPredicate(format: "id = %@", someId)

以后,您可以按如下方式使用它(例如,使用Realm):

let results = realm.objects(MyObject).filter(predicate)

关于PFQuery,这是解析类,Parse实际上是数据库作为在线数据库的服务提供者。例如,替代方案是Firebase。您可以在此处找到更多信息:https://parse.com/

相关问题