removeObserver, addObserver, 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 ответ
Добавить и удалить Observer - это фактически шаблон проектирования, который вы получаете "по умолчанию" в swift. Они слушают определенное событие и затем уведомляют слушателей (наблюдателей) об этом изменении. Например, взгляните на ваш пример:
NSNotificationCenter.defaultCenter().addObserver(self, selector: "displayPushMessage:", name: "displayMessage", object: nil)
Это создаст наблюдателя в центре уведомлений. Фактический наблюдатель - это объект, который устанавливает этого конкретного наблюдателя (например, контроллер просмотра). Этот наблюдатель должен иметь displayPushMessage, реализованный с аргументом NSNotification
, После того, как этот наблюдатель будет уведомлен о том, что что-то произошло, этот метод будет вызван. 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 и т. Д. Вы можете найти множество примеров об этом, вот тот, который даст вам объект с определенным идентификатором:
var predicate = NSPredicate(format: "id = %@", someId)
и позже вы можете использовать его следующим образом (например, с помощью Realm):
let results = realm.objects(MyObject).filter(predicate)
Что касается PFQuery, это класс синтаксического анализа, и Parse фактически является базой данных в качестве поставщика услуг для онлайновой базы данных. Альтернативой является Firebase, например. Вы можете найти больше здесь: https://parse.com/