2014-06-22 19 views
5

Come si mappa AFIncrementalStore per Twitter API v1.1?Come si esegue il mapping di AFIncrementalStore su Twitter API v1.1?


Core Data Persistenza con AFNetworking, Done Right

https://github.com/AFNetworking/AFIncrementalStore

REST API Risorse v1.1

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; 

risposta

2

Non so se quello che scrivo è esattamente utile, ma qui è quello che so:.

AFIncrementalStore ha alcuni problemi seri ed è apparentemente abbandonato da suo creatore in quanto incompatibile con AFNetworking v 2

Le questioni derivano dal fatto che AFIS cerca di essere più di un negozio incrementale. L'archivio incrementale opera solo all'interno dei suoi metodi sovrascritti e AFIS lo fa per restituire immediatamente gli oggetti dal backing store. Tuttavia, quando arriva finalmente la richiesta, non può aggiungere oggetti in questo modo. Li aggiunge al backing store e quindi tenta di aggiornare gli oggetti nei loro contesti. Questo comportamento non è stato concepito dai creatori di Core Data e ha comportato un comportamento instabile - A volte l'AFIS ha tempi di risposta molto lunghi e talvolta gli oggetti non si aggiornano correttamente. Inoltre, se si utilizza NSFetchedResultsController per alimentare le visualizzazioni tabella, alcuni callback sono chiamati spesso ans alcuni mai.

Ho passato molto tempo a provare a farlo funzionare ma probabilmente è impossibile: devi imbrogliare i dati principali che stai aggiungendo oggetti al contesto senza mai farlo.

E torna alla tua domanda: se vuoi davvero usarla, devi fondamentalmente scrivere tutti quei metodi per Twitter. Questo è un lavoro difficile, ma Twitter deve avere un modello di oggetti e alcuni ID assegnati a ciascun oggetto. L'ho fatto per le mie API ma è come uno o due giorni di duro lavoro - e non ho così tanto tempo per scriverlo qui.

+0

Come ti avvicineresti alla costruzione di un moderno client Twitter? – Zelko

+0

Io uso NSOperation personalizzata che mappa parti di api in oggetti dati di base. Lo distribuirò su github a breve. Potresti provare anche RestKit, è maturato molto sin dal suo inizio. – Terminus