2017-02-07 3 views
0

Ich habe diesen Code, die versuchen, alle Bilder von der creationDateWie kommt es, dass ich zwei verschiedene Kalendertypen von creationDate in PHAsset habe?

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); 
    }]; 

Sortierung zu holen, aber das ist das Protokoll ich für einige Bilder bekam

======= 
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 

Wie Sie es bemerken einige Bild sind die bekam creationDate zu 2560 welches Jahr 2017 im buddhistischen Kalender ist. Dies führt dazu, dass die Sortierung Bilder mit dem buddhistischen Kalender so arrangiert, dass sie sich am falschen Ende befinden.

ich nicht, warum es richtig, weil, wenn ich sehe es von modificationDate bekam ich die richtige 2017 Jahre

Wie dem auch sei, diese zu lösen?

UPDATE

Blick wie Apple Bug, weil in Fotos zu mir app diese Bilder in 3103 Jahren sind ...

Antwort

0

Es gibt keinen Apple-Bug. Falsche Datumsinformationen werden in den Bildern gespeichert. Ein NSDate ist nicht mit einem Kalender verbunden. Sie können es sich als einen einfachen Wrapper für eine Anzahl von Sekunden seit 1970 vorstellen. Das Protokoll druckt nicht mit verschiedenen Kalendern - ein Datum hat keinen Kalender. Das Datum für dieses Bild ist in der Gregorianischen Jahr 2560 - 543 Jahre in der Zukunft.

Ich denke, dass es einen Programmierer gab, der den Unterschied zwischen einem Kalender und einem Datum nicht verstand und in den Metadaten der Bilder falsche Datumsinformationen speicherte. Was ist die Quelle dieser Bilder?

+0

Ich glaube, dass diese Bilder aus der eingebauten Kamera App stammen – SaintTail

Verwandte Themen