【问题标题】:removeObserver, addObserver, NSPredicate, PFQuery what are they?removeObserver、addObserver、NSPredicate、PFQuery 它们是什么?
【发布时间】:2015-06-30 21:17:45
【问题描述】:

好的,我有几个关于在我刚刚下载的 swift 应用程序中调用的函数的问题

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")

【问题讨论】:

  • 看看苹果的文档怎么样。尝试 CMD-ciick 并按住 Alt 键单击 NS 类。
  • PFQuery 与 parse.com 的“云”数据库相关。那个网站上有资料。其他的在 Xcode 附带的文档中,如上所述。
  • 你应该阅读苹果的文档。如果有任何疑问,请具体询问

标签: swift nspredicate pfquery


【解决方案1】:

添加和删除观察者实际上是您在 swift 中“默认”获得的设计模式。他们侦听某个事件,然后通知侦听器(观察者)该更改。例如,看看你的例子:

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类,Parse实际上是数据库作为在线数据库的服务提供者。例如,替代方案是 Firebase。你可以在这里找到更多:https://parse.com/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 2022-08-13
    • 2011-08-03
    • 1970-01-01
    相关资源
    最近更新 更多