模糊使用方法

时间:2017-06-21 19:39:39

标签: ios swift xcode8

我的构建成功完成。然后一段时间后会弹出这个错误:

  

"模糊地使用' addObjectsDidChangeNotificationObserver(handler :)'"

我不明白为什么会发生这种情况,因为addObjectsDidChangeNotificationObserver方法只在项目中声明一次,而Xcode显示的第二次出现就是使用方法本身。

Found candidate 1

Error location

以下是显示错误的代码,以及哪些Xcode也将我显示为第一个候选人:

public init?(object: Managed, changeHandler: @escaping (ChangeType) -> ()) {
    guard let moc = object.managedObjectContext else { return nil }

    objectHasBeenDeleted = !type(of: object).defaultPredicate.evaluate(with: object)

    token = moc.addObjectsDidChangeNotificationObserver(handler: {
        [unowned self] note in
        guard let changeType = self.changeType(of: object, in: note) else { return }
        self.objectHasBeenDeleted = changeType == .delete
        changeHandler(changeType)
    })
}

以及addObjectsDidChangeNotificationObserver()的实现,Xcode将我作为第二个候选人:

extension NSManagedObjectContext {
    public func addObjectsDidChangeNotificationObserver(handler: @escaping (ObjectsDidChangeNotification) -> ()) -> NSObjectProtocol {
        let nc = NotificationCenter.default
        return nc.addObserver(forName: .NSManagedObjectContextObjectsDidChange, object: self, queue: nil) { note in
            let wrappedNote = ObjectsDidChangeNotification(note: note)
            handler(wrappedNote)
        }
    }
}

1 个答案:

答案 0 :(得分:1)

好的,现在问题似乎已经解决了。

显然,我搞砸了访问修饰符,但很高兴知道类似的东西会导致模糊的错误

相关问题