在 swift 中实施 PHPhotoLibraryChangeObserver 协议

Implementing PHPhotoLibraryChangeObserver protocol in swift

我正在尝试将我的 AssetService 设置为 changeObserver,但出现以下错误:

Error:(8, 14) type 'AssetService' does not conform to protocol 'PHPhotoLibraryChangeObserver'

虽然 photoLibraryDidChange 是唯一需要的方法。这是我的代码:

import UIKit
import Photos

public class AssetService : PHPhotoLibraryChangeObserver {

    public init() {

        // here I do some other stuff
        PHPhotoLibrary.sharedPhotoLibrary().registerChangeObserver(self)
    }

    public func photoLibraryDidChange(changeInstance: PHChange) {
        dispatch_async(dispatch_get_main_queue(), {

        })
    }
}

我认为您需要从 NSObject 扩展才能在 PhotoFramework 中使用它

因此您还需要覆盖 init 并添加 super.init()

import UIKit 
import Photos

public class AssetService : NSObject, PHPhotoLibraryChangeObserver {
     public override init() {
         super.init()
         // here I do some other stuff
         PHPhotoLibrary.sharedPhotoLibrary().registerChangeObserver(self)
     }

    public func photoLibraryDidChange(changeInstance: PHChange) {
        dispatch_async(dispatch_get_main_queue(), {

        })
    }
}

希望这会解决问题

在 Swift 3.0 中,寄存器现在实际上看起来像这样:

func photoLibraryDidChange(_ changeInstance: PHChange) {
    DispatchQueue.main.async {

    }
}

public override init() {
    super.init()
    PHPhotoLibrary.shared().register(self)
}

其他都一样