gpt4 book ai didi

ios - 为什么我在 PHAsset 中得到了两种不同的日历类型的 creationDate?

转载 作者:行者123 更新时间:2023-11-29 00:30:14 26 4
gpt4 key购买 nike

我有这段代码,它尝试获取按creationDate排序的所有图像

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

如您所见,有些图像的 creationDate2560,即佛教日历中的 2017 年。这会导致排序将带有佛历的图像排在最后,这是错误的。

我不明白为什么这是正确的,因为当我从 modificationDate 看到它时,我得到了正确的 2017 年份

有办法解决这个问题吗?

更新

对我来说看起来像 Apple bug 因为在照片应用程序中这些图像是在 3103 年......

最佳答案

没有 Apple 错误。图像中存储的日期信息不正确。 NSDate 未连接到日历。您可以将其视为自 1970 年以来的秒数的简单包装器。日志不是使用不同的日历打印的——日期没有日历。这些图像的日期在 公历 年 2560 年 - future 543 年。

我认为有一个程序员不理解日历和日期之间的区别,并在图像的元数据中存储了错误的日期信息。这些图片的来源是什么?

关于ios - 为什么我在 PHAsset 中得到了两种不同的日历类型的 creationDate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42084919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com