ALAssetPropertyDate返回“错误的”日期

|| 我目前正在从事一个需要读取一些(纬度,经度和日期)EXIF数据的项目。位置数据似乎正确,但是我要获取的日期似乎是“最后修改日期”。
{
    CLLocation *loc = [asset valueForProperty:ALAssetPropertyLocation];
    NSDate *date = [asset valueForProperty:ALAssetPropertyDate];
    //Returns Last modified date(Picture was taken ... let\'s say september 
    //last year and it would return the date and time I \'modified\' the image).
    NSString *latitude  = [NSString stringWithFormat:@\"%g\",loc.coordinate.latitude];//Returns correct Latitude
    NSString *longitude = [NSString stringWithFormat:@\"%g\",loc.coordinate.longitude];//Returns correct Longitude
}
我的问题是:我做错什么了吗,或者这是预期的行为。 我也尝试使用ѭ1代替ѭ2,但是它们返回了相同的日期。  任何帮助是极大的赞赏 !     
已邀请:
尽管没有明确记录,但我猜测这是预期的行为。日期指的是资产创建的时间以及修改图像的时间,您可能在隐式创建新资产。
ALAsset
文档中没有任何内容表明其属性对应于图像的EXIF数据。 要访问EXIF数据,您可以使用Image I / O框架(自iOS 4.0起可用),尤其是
CGImageSourceCopyProperties
函数。     
您还可以从Exif
DateTimeOriginal
ALAsset
NSDateFormatter *dateFormatter = [[NSDateFormatter new] autorelease];
dateFormatter.dateFormat = @\"y:MM:dd HH:mm:ss\";
NSDate *date = [dateFormatter dateFromString:[[[[asset defaultRepresentation] metadata] objectForKey:@\"{Exif}\"] objectForKey:@\"DateTimeOriginal\"]];
从资产获取元数据需要将Exif标头加载到内存(或整个图像文件?)上,并且上述那些方法似乎对内存空间使用自动释放池。如果您对成千上万张图像进行批处理,则可能导致内存不足或更严重的崩溃。 要变通解决内存不足的问题,您可以使用Ad-Hoc自动释放池。
NSDateFormatter *dateFormatter = [[NSDateFormatter new] autorelease];
dateFormatter.dateFormat = @\"y:MM:dd HH:mm:ss\";
for (ALAsset *asset in thousandsOfAssets) {
    NSAutoreleasePool *pool = [NSAutoreleasePool new];
    NSDate *date = [dateFormatter dateFromString:[[[[asset defaultRepresentation] metadata] objectForKey:@\"{Exif}\"] objectForKey:@\"DateTimeOriginal\"]];
    // do something
    [pool release];
}
编辑:更正错误的dateFormat(SS-> ss)。谢谢@ code-roadie     

要回复问题请先登录注册