保留一系列图像的最佳方法?

时间:2014-10-08 22:10:25

标签: ios objective-c

我正在寻找一种方法来将图像保存到应用程序关闭重新启动后可以访问的数组(或类似) - 还需要按日期对图像进行排序。我现在能够使用以下代码将图像存储到应用程序的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 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:0)

将图像数据和日期存储在某些词典中,然后将这些词典存储在一个数组中,然后使用NSKeyedArchiver存档该数组。

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

然后当你想要检索它时:

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

然后只比较检索到的数组中各种词典中的日期。