在Swift中获取PHAsset的位置

Lin*_*äck 6 objective-c ios swift ios8 phasset

由于某种原因location,a上的属性PHAsset仅在Objective-c中公开,而不在Swift中公开.

文档:PHAsset.location

为了解决这个问题,我想我可以创建一个Objective-C类,其唯一目的是提取位置并将其导入Swift.

LocationGetter.h

@interface LocationGetter : NSObject
+ (CLLocation *)locationForAsset:(PHAsset *) asset;
@end
Run Code Online (Sandbox Code Playgroud)

LocationGetter.m

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

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

LocationGetter.locationForAsset(ass)
Run Code Online (Sandbox Code Playgroud)

'LocationGetter.Type'没有名为'locationForAsset'的成员

奖金问题:为什么苹果公司没有location迅速曝光?

Lin*_*äck 5

事实证明,答案其实很简单。问题是 Swift 文件不知道 aCLLocation是什么,因此拒绝导入该函数。导入CoreLocation解决了这个问题。

import CoreLocation

LocationGetter.locationForAsset(ass)
Run Code Online (Sandbox Code Playgroud)

编辑: Apple 此后已将其.location作为 getter 包含在PHAsset. 现在获取位置就像 一样简单asset.location