由于某种原因,location
上的PHAsset
属性仅在Objective-c中公开,而在Swift中不公开。
Documentation: PHAsset.location
要解决此问题,我认为可以创建一个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)
额外的问题:苹果到底为什么不 swift 公开
location
? 最佳答案
事实证明,答案确实很简单。问题在于Swift文件不知道CLLocation
是什么,因此拒绝导入该函数。导入CoreLocation
可解决此问题。
import CoreLocation
LocationGetter.locationForAsset(ass)
编辑:苹果从那以后就将
.location
包含在PHAsset
中作为 setter/getter 。现在,获取位置就像asset.location
一样容易。