键入' WatchManager'不符合协议' WCSessionDelegate'

时间:2018-02-21 17:23:09

标签: ios iphone swift xcode watch-os

我尝试在exists项目中使用WatchManager.swift。

import Foundation
import WatchConnectivity

class WatchManager: NSObject, WCSessionDelegate {


    func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {

    }

    func sessionDidBecomeInactive(_ session: WCSession) {

    }

    func sessionDidDeactivate(_ session: WCSession) {

    }
}

但是我在构建项目时遇到了麻烦

Swift Compiler Error Group - Type 'WatchManager' does not conform to protocol 'WCSessionDelegate'

同样在问题导航器中我看到错误

Candidate has non-matching type '(WCSession, WCSessionActivationState, Error?) -> ()'

我已经尝试过:

  • 删除派生数据
  • 清洁项目
  • clean build folder
  • 从git重装项目
  • 从另一个项目复制文件
  • 创建新文件并重命名
  • 在另一台Mac上构建项目

但我每次都会收到此错误

BUT! 如果我将创建新项目并添加watchOS目标并使用此代码创建新文件 - 项目将成功构建。

为什么呢?我如何尝试在我的存在项目中添加WCSessionDelegate?

我使用Xcode9.2,swift4.0

1 个答案:

答案 0 :(得分:0)

...喔 感谢@Sameer answer

WCSessionDelegate需要方法

public func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?)

但我的项目是我的名为Error的自定义类

这就是编译器产生不符合协议

的错误的原因