2013-07-01 12 views
5

Sono molto deluso dal fatto che il restkit abbia rimosso la politica cache nella versione più recente.Restache Cache policy 20.x

Come possiamo ottenere lo stesso nella versione più recente? ed è possibile utilizzare le classi di restkit esistenti per questo o in qualche altro modo per implementare lo stesso?

+0

RestKit. Cosa stai cercando di fare e cosa non funziona? – Wain

+0

Nella versione precedente ho creato un wrapper che memorizzerà anche la risposta alla richiesta POST. Stavo semplicemente assegnando il valore a una richiesta come cachetimeout, durata ecc. – nik

+0

trovato una risposta utile, Soluzione [qui] (https://groups.google.com/forum/#!topic/restkit/Va8sPGF7MyE) – nik

risposta

1

È possibile creare RKManagedObjectRequestOperation con NSMutableURLRequest e impostare request.cachePolicy:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:path relativeToURL:self.baseURL]]; 

request.cachePolicy = NSURLRequestReloadIgnoringLocalAndRemoteCacheData; 

RKManagedObjectRequestOperation *operation = [[RKManagedObjectRequestOperation alloc] initWithRequest:request responseDescriptors:[RKObjectManager sharedManager].responseDescriptors]; 
operation.managedObjectContext = [[RKManagedObjectStore defaultStore] newChildManagedObjectContextWithConcurrencyType:NSPrivateQueueConcurrencyType tracksChanges:YES]; 
operation.managedObjectCache = [RKManagedObjectStore defaultStore].managedObjectCache; 

[operation setCompletionBlockWithSuccess:success failure:failure]; 

NSOperationQueue *operationQueue = [NSOperationQueue new]; 
[operationQueue addOperation:operation]; 
+0

è Posso personalizzare questa politica della cache della richiesta come cachetimeout, durata ecc. ?? – nik

6

ho risolto questo problema sottoclasse RKObjectManager (come indicato nel 2 ° punto del link nella risposta di nik ma specificato in un po 'più in dettaglio nel documento docs in "Personalizzazione & Note di sottoclasse").

ho aggiunto il seguente metodo alla sottoclasse e non c'era più la cache: usa saranno utilizzati AFNetworking cache di manipolazione URL in modo standard,

- (NSMutableURLRequest *)requestWithObject:(id)object method:(RKRequestMethod)method path:(NSString *)path parameters:(NSDictionary *)parameters 
{ 
    NSMutableURLRequest *request = [super requestWithObject:object method:method path:path parameters:parameters]; 
    request.cachePolicy = NSURLRequestReloadIgnoringLocalAndRemoteCacheData; 
    return request; 
} 
+0

Penso che dalla v0.20.3 il metodo per sovrascrivere sia requestWithMethod: percorso: parametri: basta aggiungere "request.cachePolicy = NSURLRequestReloadIgnoringLocalAndRemoteCacheData;" prima della "richiesta di reso"; –

Problemi correlati