@@ -57,7 +57,7 @@ @interface FICImageTable () {
5757 NSMutableDictionary *_indexMap; // Key: entity UUID, value: integer index into the table file
5858 NSMutableDictionary *_sourceImageMap; // Key: entity UUID, value: source image UUID
5959 NSMutableIndexSet *_occupiedIndexes;
60- NSMutableArray *_MRUEntries;
60+ NSMutableOrderedSet *_MRUEntries;
6161 NSDictionary *_imageFormatDictionary;
6262}
6363
@@ -142,7 +142,7 @@ - (instancetype)initWithFormat:(FICImageFormat *)imageFormat {
142142 _indexMap = [[NSMutableDictionary alloc ] init ];
143143 _occupiedIndexes = [[NSMutableIndexSet alloc ] init ];
144144
145- _MRUEntries = [[NSMutableArray alloc ] init ];
145+ _MRUEntries = [[NSMutableOrderedSet alloc ] init ];
146146 _sourceImageMap = [[NSMutableDictionary alloc ] init ];
147147
148148 _recentChunks = [[NSMutableArray alloc ] init ];
@@ -501,10 +501,11 @@ - (void)_entryWasAccessedWithEntityUUID:(NSString *)entityUUID {
501501- (void )saveMetadata {
502502 [_lock lock ];
503503
504+ NSArray *mruArray = [_MRUEntries array ];
504505 NSDictionary *metadataDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
505506 _indexMap, FICImageTableIndexMapKey,
506507 _sourceImageMap, FICImageTableContextMapKey,
507- _MRUEntries , FICImageTableMRUArrayKey,
508+ mruArray , FICImageTableMRUArrayKey,
508509 _imageFormatDictionary, FICImageTableFormatKey, nil ];
509510
510511 NSData *data = [NSPropertyListSerialization dataWithPropertyList: metadataDictionary format: NSPropertyListBinaryFormat_v1_0 options: 0 error: NULL ];
@@ -541,7 +542,13 @@ - (void)_loadMetadata {
541542 }
542543
543544 [_sourceImageMap setDictionary: [metadataDictionary objectForKey: FICImageTableContextMapKey]];
544- [_MRUEntries setArray: [metadataDictionary objectForKey: FICImageTableMRUArrayKey]];
545+
546+ [_MRUEntries removeAllObjects ];
547+
548+ NSArray *mruArray = [metadataDictionary objectForKey: FICImageTableMRUArrayKey];
549+ if (mruArray) {
550+ [_MRUEntries addObjectsFromArray: mruArray];
551+ }
545552 }
546553}
547554
0 commit comments