2016-03-03 6 views
1

Я пытаюсь установить мой AssetService, как changeObserver, но я получаю сообщение об ошибке на следующую:Реализация PHPhotoLibraryChangeObserver протокол в быстрой

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(), { 

     }) 
    } 
} 

ответ

1

Я думаю, что вы должны простираться от NSObject для того, чтобы использовать его в фоторамку

Поэтому вам нужно также переопределить инициализации и добавить 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(), { 

     }) 
    } 
} 

Надеется, что это будет решать его

0

В Swift 3.0 регистр на самом деле выглядит, как это сейчас:

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

    } 
} 

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

Все остальное то же самое в Bart Schoon's answer