在Swift中获取PHAsset的位置

出于某种原因, PHAssetlocation属性只在Objective-c中显示,而不在Swift中显示。

文档:PHAsset.location

为了解决它,我想我可以创build一个Objective-C类,其唯一目的是提取位置并将其导入到Swift中。

LocationGetter.h

 @interface LocationGetter : NSObject + (CLLocation *)locationForAsset:(PHAsset *) asset; @end 

LocationGetter.m

 @implementation LocationGetter + (CLLocation *)locationForAsset:(PHAsset *) asset { return [asset location]; } @end 

到目前为止这么好,但是当我尝试在Swift中使用它时:

 LocationGetter.locationForAsset(ass) 

“LocationGetter.Type”没有名为“locationForAsset”的成员

奖金问题:为什么地球上没有苹果迅速曝光location

事实certificate,答案非常简单。 问题是Swift文件不知道CLLocation是什么,因此拒绝导入该函数。 导入CoreLocation解决了这个问题。

 import CoreLocation LocationGetter.locationForAsset(ass) 

编辑:苹果已经包括。 .location作为一个吸气剂在PHAsset 。 获取位置现在与asset.location一样简单。

对于那些想要打印每个照片的位置,这里是:

 var allAssets = PHAsset.fetchAssetsWithMediaType(PHAssetMediaType.Image, options: nil) allAssets.enumerateObjectsUsingBlock({asset, index, stop in if let ass = asset as? PHAsset{ println(ass.location) } }