Ich arbeite an einer Snapchat-ähnlichen App und versuche, die NSData-Repräsentation von Bildern und Videos zwischenzuspeichern. Ich habe versucht mit NSCache, aber das hat nicht funktioniert, jedes Mal, wenn die App in den Hintergrund ging, wurden alle Objekte im Cache entfernt, dann habe ich NSUserDefaults zum Caching versucht, aber das war auch kein guter Ansatz. Obwohl es funktioniert und Daten mit NSUserDefaults bestehen bleiben, nimmt es eine Menge Speicher auf und ich habe gelesen, dass es unpraktisch ist, diese Art von Objekten in dieser Klasse zu speichern. Was sind Ihre Vorschläge für Caching und persistente Daten neben den beiden oben genannten?NSData Caching iOS
0
A
Antwort
0
Schreiben Sie NSData in Dokumentenverzeichnis Ihre Anwendung und es lesen, wenn Sie diese Daten wieder in Ihrer Anwendung benötigen
zum Schreiben von Daten auf Anwendungsdokumentenverzeichnis
//get the path of our apps Document Directory(NSDocumentDirectory)
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
//the path is stored in the first element
NSString *path = [paths firstObject];
//append the name of our file to the path: /path/to/myimage.png
path = path = [path stringByAppendingPathComponent:@"myimage.png"];
//store any errors
NSError *error;
// Write NSData to Disk
BOOL success = [imageData writeToFile:path atomically:YES];
if(success){
NSLog(@"Success");
}else{
NSLog(@"Error: %@",[error localizedDescription]);
}
zum Lesen von Daten aus der Anwendung des Dokumentverzeichnis
/get the path of our apps Document Directory(NSDocumentDirectory)
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
//the path is stored in the first element
NSString *path = [paths firstObject];
//append the name of our file to the path: /path/to/myimage.png
path = path = [path stringByAppendingPathComponent:@"myimage.png"];
//store any errors
NSError *error;
NSData *rawImage = [NSData dataWithContentsOfFile:path
options:NSDataReadingMappedIfSafe error:nil];
if(rawImage){
UIImage *image = [UIImage imageWithData:rawImage];
NSLog(@"%@",image);
}else{
NSLog(@"Error: %@",[error localizedDescription]);
}