2017-02-07 4 views
0

У меня есть этот код, который попытается извлечь все изображения сортировки по creationDateПочему у меня есть два разных типа calendarDate в PHAsset?

PHFetchOptions *options = [[PHFetchOptions alloc] init]; 
    options.sortDescriptors = @[ 
     [NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES], 
    ]; 

    switch (type) { 
     case MMAssetsPhoto:{ 
      fetch = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:options]; 
      break; 
     } 
     case MMAssetsVideo:{ 
      options.includeAssetSourceTypes = PHAssetSourceTypeiTunesSynced | PHAssetSourceTypeCloudShared | PHAssetSourceTypeUserLibrary | PHAssetSourceTypeNone; 
      fetch = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeVideo options:options]; 
      break; 
     } 
     default:{ 
      options.includeAssetSourceTypes = PHAssetSourceTypeUserLibrary; 
      fetch = [PHAsset fetchAssetsWithOptions:options]; 
      break; 
     } 
    } 
    [fetch enumerateObjectsUsingBlock:^(PHAsset * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { 
     EkoLog(@"======="); 
     EkoLog(@"asset %@", obj); 
     EkoLog(@"create date %@", obj.creationDate); 
     EkoLog(@"modification date %@", obj.modificationDate); 
    }]; 

но это бревно я для некоторых изображений

======= 
asset <PHAsset: 0x10d075bd0> D27FB9E1-53F0-4884-A0EA-C6E839A6A0FB/L0/001 mediaType=1/0, sourceType=1, (4032x3024), creationDate=2017-01-05 11:54:50 +0000, location=0, hidden=0, favorite=0 
create date 2017-01-05 11:54:50 +0000 
modification date 2017-01-05 11:54:50 +0000 
======= 
asset <PHAsset: 0x10d075d20> 18EA7D99-9FB7-4941-9E7A-E0C68F5F791B/L0/001 mediaType=1/0, sourceType=1, (4032x3024), creationDate=2560-01-05 14:03:59 +0000, location=0, hidden=0, favorite=0 
create date 2560-01-05 14:03:59 +0000 
modification date 2017-01-05 14:04:00 +0000 
======= 
asset <PHAsset: 0x10d075e70> 41871302-553F-4BF0-AA8C-E6AC177E0068/L0/001 mediaType=1/0, sourceType=1, (3024x4032), creationDate=2560-01-05 14:15:57 +0000, location=0, hidden=0, favorite=0 
create date 2560-01-05 14:15:57 +0000 
modification date 2017-02-04 21:08:48 +0000 

Как вы заметили, есть некоторые изображения, которые получил creationDate до 2560, который является годом 2017 в буддийском календаре. Это приводит к тому, что сортировка позволяет упорядочить изображения с календарем буддиста в конце, что является неправильным.

Я не почему это правильно, потому что это, когда я вижу его из modificationDate я получил правильный 2017 год

Во всяком случае, чтобы решить эту проблему?

UPDATE

Посмотрите, как Apple, ошибка для меня, потому что в приложении Фотографии эти изображения в 3103 году ...

ответ

0

Там нет Apple, ошибка. Неправильная информация о дате сохраняется на изображениях. NSDate не привязан к календарю. Вы можете думать об этом как о простой обертке за считанные секунды с 1970 года. Журнал не печатает с использованием разных календарей - дата не имеет календаря. Дата для этих изображений находится в Григорианский год 2560 - 543 года в будущем.

Я думаю, что был программист, который не понимал разницы между календарем и датой и хранил неверную информацию о дате в метаданных изображений. Каков источник этих изображений?

+0

Я считаю, что эти снимки взяты из встроенного приложения для камеры – SaintTail

Смежные вопросы