root / Classes / Archiver.m @ 9fee07a6
History | View | Annotate | Download (2.5 kB)
1 | 700184fb | Miltiadis Vasilakis | // |
---|---|---|---|
2 | 700184fb | Miltiadis Vasilakis | // Archiver.m |
3 | 700184fb | Miltiadis Vasilakis | // OpenStack |
4 | 700184fb | Miltiadis Vasilakis | // |
5 | 700184fb | Miltiadis Vasilakis | // Created by Mike Mayo on 10/4/10. |
6 | 700184fb | Miltiadis Vasilakis | // The OpenStack project is provided under the Apache 2.0 license. |
7 | 700184fb | Miltiadis Vasilakis | // |
8 | 700184fb | Miltiadis Vasilakis | |
9 | 700184fb | Miltiadis Vasilakis | #import "Archiver.h" |
10 | 700184fb | Miltiadis Vasilakis | |
11 | 700184fb | Miltiadis Vasilakis | @implementation Archiver |
12 | 700184fb | Miltiadis Vasilakis | |
13 | 700184fb | Miltiadis Vasilakis | + (id)retrieve:(NSString *)key { |
14 | 700184fb | Miltiadis Vasilakis | NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); |
15 | 700184fb | Miltiadis Vasilakis | NSString *documentsDirectory = [paths objectAtIndex:0]; |
16 | 700184fb | Miltiadis Vasilakis | NSString *filePath = [documentsDirectory stringByAppendingString:[NSString stringWithFormat:@"/%@.archive", key]]; |
17 | 700184fb | Miltiadis Vasilakis | // NSLog(@"filepath: %@", filePath); |
18 | 7db1712d | Miltiadis Vasilakis | return [NSKeyedUnarchiver unarchiveObjectWithFile:filePath]; |
19 | 700184fb | Miltiadis Vasilakis | /* TODO: fixme on potential leak - "retrieve" doesn't match copy or alloc pattern, and hence should be returning autoreleased object |
20 | 700184fb | Miltiadis Vasilakis | * Not changing right now, but documenting for later fixing - need to see how and where [Archiver.. retrieve:key] is used to make sure |
21 | 700184fb | Miltiadis Vasilakis | * switching this won't cause a crash |
22 | 700184fb | Miltiadis Vasilakis | */ |
23 | 700184fb | Miltiadis Vasilakis | } |
24 | 700184fb | Miltiadis Vasilakis | |
25 | 700184fb | Miltiadis Vasilakis | + (void)persist:(id)object key:(NSString *)key { |
26 | 700184fb | Miltiadis Vasilakis | // dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0); |
27 | 700184fb | Miltiadis Vasilakis | // dispatch_async(queue, ^{ |
28 | 700184fb | Miltiadis Vasilakis | NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); |
29 | 700184fb | Miltiadis Vasilakis | NSString *documentsDirectory = [paths objectAtIndex:0]; |
30 | 700184fb | Miltiadis Vasilakis | NSString *filePath = [documentsDirectory stringByAppendingString:[NSString stringWithFormat:@"/%@.archive", key]]; |
31 | 700184fb | Miltiadis Vasilakis | [NSKeyedArchiver archiveRootObject:object toFile:filePath]; |
32 | 700184fb | Miltiadis Vasilakis | // }); |
33 | 700184fb | Miltiadis Vasilakis | } |
34 | 700184fb | Miltiadis Vasilakis | |
35 | 700184fb | Miltiadis Vasilakis | + (BOOL)delete:(NSString *)key { |
36 | 700184fb | Miltiadis Vasilakis | NSFileManager *fileManager = [NSFileManager defaultManager]; |
37 | 700184fb | Miltiadis Vasilakis | NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); |
38 | 700184fb | Miltiadis Vasilakis | NSString *documentsDirectory = [paths objectAtIndex:0]; |
39 | 700184fb | Miltiadis Vasilakis | NSString *filePath = [documentsDirectory stringByAppendingString:[NSString stringWithFormat:@"/%@.archive", key]]; |
40 | 700184fb | Miltiadis Vasilakis | return [fileManager removeItemAtPath:filePath error:NULL]; |
41 | 700184fb | Miltiadis Vasilakis | } |
42 | 700184fb | Miltiadis Vasilakis | |
43 | 700184fb | Miltiadis Vasilakis | + (BOOL)deleteEverything { |
44 | 700184fb | Miltiadis Vasilakis | BOOL result = YES; |
45 | 700184fb | Miltiadis Vasilakis | NSFileManager *fileManager = [NSFileManager defaultManager]; |
46 | 700184fb | Miltiadis Vasilakis | NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); |
47 | 700184fb | Miltiadis Vasilakis | NSString *documentsDirectory = [paths objectAtIndex:0]; |
48 | 700184fb | Miltiadis Vasilakis | |
49 | 700184fb | Miltiadis Vasilakis | NSArray *files = [fileManager contentsOfDirectoryAtPath:documentsDirectory error:NULL]; |
50 | 700184fb | Miltiadis Vasilakis | |
51 | 700184fb | Miltiadis Vasilakis | for (int i = 0; i < [files count]; i++) { |
52 | 700184fb | Miltiadis Vasilakis | NSString *path = [files objectAtIndex:i]; |
53 | 700184fb | Miltiadis Vasilakis | result = result && [fileManager removeItemAtPath:path error:NULL]; |
54 | 700184fb | Miltiadis Vasilakis | } |
55 | 700184fb | Miltiadis Vasilakis | |
56 | 700184fb | Miltiadis Vasilakis | return result; |
57 | 700184fb | Miltiadis Vasilakis | } |
58 | 700184fb | Miltiadis Vasilakis | |
59 | 700184fb | Miltiadis Vasilakis | @end |