ios - 模棱两可的使用方法

标签 ios swift xcode8

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

"Ambiguous use of '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)
        }
    }
}

最佳答案

好了,现在问题好像解决了。

显然,我搞砸了访问修饰符,但很高兴知道这样的事情会导致模棱两可的错误

关于ios - 模棱两可的使用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44684938/

相关文章:

ios - 使本地通知默认不显示在通知中心

ios - Xcode 8.3.2 构建脚本 - 指定的应用程序不存在或不是捆绑目录

iOS leftSpacingConstraint 相对于屏幕高度

ios - 快速 fatal error : unexpectedly found nil while unwrapping an Optional value

c# - 在 Xamarin.iOS 中为 2 个依赖静态库创建绑定(bind)

ios - 自动将用户添加到 Swift 中的 Parse 类

ios - 如何在核心数据中存储数组(Swift)

ios - cocoa pod : Swift compiler error "Failed to import bridging header" reason?

ios - 具有 2 个变量和不同语言的 swift 文本

ios - 对成员 'tableView(_:numberOfRowsInSection:)' 的不明确引用 为什么会出现此错误?