2014-10-08 47 views
0

我正在尋找一種方法來將圖像保存到可在應用程序關閉重新啓動後訪問的數組(或類似圖像)中 - 還需要按日期對圖像進行排序。我目前能夠將影像存儲到應用程序的NSDocumentDirectory用下面的代碼:堅持一系列圖像的最佳方式?

-(NSString *)currentDateandTime 
{ 
    NSDate *today = [NSDate date]; 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"MMddyyyy_HHmmss"]; 
    NSString *dateString = [dateFormat stringFromDate:today]; 
    return dateString; 
} 

-(void)saveImageToDocuments 
{ 
    NSData *imageData = UIImagePNGRepresentation(image); 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *date = [self currentDateandTime]; 

    NSString *imagePath =[documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@_image.png",date]]; 
} 

這意味着我已經得到的圖像,其中的日期/時間是在圖像的文件名。將這些圖像存儲在數組或字典中並按日期/時間對它們進行排序的最佳方法是什麼?謝謝閱讀!

回答

2

我會將文件名和日期保存在plist文件中,該文件是格式爲字典的數組:@{ @"filename" : imageFileName, @"date": imageDate }

當您將該plist加載到NSArray中時,可以通過指定自己的比較方法按日期對其進行排序。 e.g:

NSArray *filenames = [[NSArray alloc] initWithContentsOfFile:filePath]; 

NSArray *sortedFilenames = [filenames sortedArrayUsingComparator: 
    ^NSComparisonResult(NSDictionary *dict1, NSDictionary *dict2) 
{ 
    NSDate *date1 = dict1[@"date"]; 
    NSDate *date2 = dict2[@"date"]; 

    return [date1 compare:date2]; 
} 
0

存儲圖像數據,並在一些字典中的日期,然後存儲在數組中的字典,然後使用的NSKeyedArchiver存檔陣列。

[NSKeyedArchiver archiveRootObject:imageDictionary toFile:@"imagesArray"]; 

然後,當你想找回它:

NSArray * retrievedImages = [NSKeyedUnarchiver unarchiveObjectWithFile:@"imagesArray"]; 

然後,只需比較檢索到數組中的各種字典的日期。