2014-06-22 26 views
5

Jak mapować AFIncrementalStore do Twitter API v1.1?Jak mapować AFIncrementalStore do Twitter API v1.1?


Rdzeń danych Trwałość z AFNetworking, Done Right

https://github.com/AFNetworking/AFIncrementalStore

REST API v1.1 Resources

https://dev.twitter.com/docs/api/1.1


- (id)representationOrArrayOfRepresentationsOfEntity:(NSEntityDescription *)entity 
            fromResponseObject:(id)responseObject; 

- (NSDictionary *)representationsForRelationshipsFromRepresentation:(NSDictionary *)representation 
                  ofEntity:(NSEntityDescription *)entity 
                 fromResponse:(NSHTTPURLResponse *)response; 

- (NSString *)resourceIdentifierForRepresentation:(NSDictionary *)representation 
             ofEntity:(NSEntityDescription *)entity 
            fromResponse:(NSHTTPURLResponse *)response; 

- (NSDictionary *)attributesForRepresentation:(NSDictionary *)representation 
            ofEntity:(NSEntityDescription *)entity 
           fromResponse:(NSHTTPURLResponse *)response; 

- (NSMutableURLRequest *)requestForFetchRequest:(NSFetchRequest *)fetchRequest 
            withContext:(NSManagedObjectContext *)context; 

- (NSMutableURLRequest *)requestWithMethod:(NSString *)method 
         pathForObjectWithID:(NSManagedObjectID *)objectID 
           withContext:(NSManagedObjectContext *)context; 

- (NSMutableURLRequest *)requestWithMethod:(NSString *)method 
         pathForRelationship:(NSRelationshipDescription *)relationship 
          forObjectWithID:(NSManagedObjectID *)objectID 
           withContext:(NSManagedObjectContext *)context; 

Odpowiedz

2

Nie wiem, czy to, co piszę jest dokładnie pomocny, ale tutaj jest to, co wiem.

AFIncrementalStore ma poważne problemy i najwyraźniej opuszczony przez swojego twórcę, ponieważ jest niezgodna z AFNetworking v 2

Problemy wynikają z faktu, że AFIS stara się być czymś więcej niż sklepem przyrostowym. Magazyn przyrostowy działa tylko w swoich metodach nadpisywanych, a AFIS robi to, aby natychmiast zwrócić obiekty ze sklepu zaplecza. Jednak, gdy żądanie wreszcie przychodzi, nie może dodawać obiektów w ten sposób. Dodaje je do zaplecza, a następnie próbuje odświeżyć obiekty w ich kontekstach. To zachowanie nie zostało sprawdzone przez twórców danych Core i powoduje niestabilne zachowanie - AFIS czasami ma bardzo długi czas odpowiedzi, a czasami obiekty nie odświeżają się prawidłowo. Ponadto, jeśli używasz NSFetchedResultsController do podawania widoków tabel, niektóre wywołania zwrotne są często wywoływane, a niektóre nigdy.

Spędziłem dużo czasu, próbując to zrobić, ale prawdopodobnie jest to niemożliwe - musisz oszukiwać podstawowe dane, które dodajesz obiekty do kontekstu, nigdy tego nie robiąc.

I wracając do pytania - jeśli naprawdę chcesz z niego korzystać - zasadniczo musisz napisać te wszystkie metody na twitterze. To jest ciężka praca, ale twitter musi mieć jakiś model obiektu i jakiś identyfikator przypisany do każdego obiektu. Zrobiłem to dla mojego API, ale to jak jeden lub dwa dni ciężkiej pracy - i nie mam za dużo czasu, aby to napisać tutaj.

+0

Jak podchodzisz do budowy nowoczesnego klienta Twittera? – Zelko

+0

Używam niestandardowej funkcji NSOperation, która mapuje części interfejsu API na podstawowe obiekty danych. Niedługo rozprowadzę go na githubie. Możesz także wypróbować RestKit, sporo dojrzewa od samego początku. – Terminus