Created
February 8, 2016 17:27
-
-
Save ov1d1u/781b27615f1d97b0b8b5 to your computer and use it in GitHub Desktop.
Hello!
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## Canale | |
So, ca sa te abonezi la update-urile venite de la Telepat (cele pentru obiecte, mai jos cele pentru contexte) intai faci subscribe: | |
[[Telepat client] subscribe:context modelName:@"polls" classType:[IABMPoll class] withBlock:^(TelepatResponse *response) { | |
// context: TelepatContext-ul la care vrei sa te abonezi | |
// @"polls": numele modelului | |
// classType: tipul obiectelor pe care il astepti din subscription, pentru ca Telepat sa stie ce sa iti returneze | |
}]; | |
Apoi te abonezi via `NSNotificationCenter` cam asa: | |
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateData:) name:TelepatChannelObjectUpdated object:nil]; | |
Pentru ca acum in `updateData:` o sa iti vina gramada update-urile pentru toate obiectele din canalele la care esti abonat probabil primul lucru pe care o sa il vrei sa faci in metoda asta e sa: | |
if (![notification.userInfo[kNotificationObject] isKindOfClass:[IABMPoll class]]) return; | |
Acuma in `notification.userInfo` asta o sa ai asa: | |
*kNotificationObject*: obiectul gata instantiat si actualizat | |
*kNotificationPropertyName*: proprietatea care a fost actualizata | |
*kNotificationValue*: valoarea proprietatii | |
*kNotificationOrigin*: originea de unde a venit notificarea (la subscribe primesti obiectele si ca raspuns la subscribe si ca notificari de tip `TelepatChannelObjectAdded`; dupa cheia asta poti sa iti dai seama de unde vin obiectele) | |
De aici depinde ce vrei tu sa faci, pe langa `TelepatChannelObjectUpdated` pe care ti l-am prezentat mai ai si `TelepatChannelObjectAdded` si `TelepatChannelObjectDeleted` care functioneaza asemanator. | |
Ca sa actualizezi tu un obiect faci asa: | |
TelepatUser *user = .....; // presupunand ca ai deja o instanta user pe undeva | |
TelepatUser *updatedUser = [user copy]; | |
updatedUser.name = @"Cristi"; | |
[channel patch:updateUser]; // si de acum Telepat o sa creeze patch-ul automat si o sa il trimita spre backend | |
Ca alternativa la `patch:` mai ai si | |
- (NSString *) patch:(TelepatBaseObject *)object withBlock:(void (^)(TelepatResponse *response))block; | |
asta daca vrei sa si primesti o confirmare pentru actiunea de patch. Poti sa obtii si tu patch-ul manual facand: | |
NSDictionary *patch = [user patchAgains:updatedUser]; | |
asta daca o sa iti trebuiasca candva chestia asta... | |
## Contexte | |
Update-urile la contexte vin pur si simplu, fara sa te abonezi nicaieri, insa cand te abonezi la `NSNotificationCenter` va trebui sa o faci dupa `TelepatContextAdded`, `TelepatContextUpdated` sau `TelepatChannelObjectDeleted`, dupa caz. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment