在Xcode中8,如果你声明一个类(或结构),符合一个协议,但还没有实现所需的方法(功能?)的Xcode会给此消息“类型‘ClassName
’不符合协议‘ProtocolName
’”这是真实的。
如果通过单击三角形打开错误,你会看到一些灰色的感叹号图标的项目。每个项目说“议定书要求的功能...你想添加一个存根?”我想添加一个存根!我该如何告诉它添加一个存根给我吗?
raphh的答案是正确的,但这里的Xcode仍然是一个小马车(至少对我来说),
如果不编译后选择Fix-it
正确的点号转换为感叹号,你不能让它再出现,除非你试图构建一个更多的时间。
建成后右:Dot error icon
如果你不这样做的Fix-it
马上:exclamation mark error icon
你必须重新建立的时候,你有几种方法来实现再得到点图标,你没有做的第一个Fix-it
。
是的,点击“修复”,如你所提到的协议的xcode将增加neccessary方法和变量,还有一件事时,Xcode会在执行协议中的类与适当的读写权限添加变量。
例如:在你的协议,如果你声明获取,设置变量,并在你的结构/类,你都宣布为“让”属性,那么Xcode中会抛出一个错误,说“你要添加的协议存根”,当你单击修复它,它现在在协议协议添加“变种”属性守法类/结构的获取,设置属性
protocol VoiceAssistant {
var name: String {get}
var voice: String {get set}
}
struct Siri: VoiceAssistant {
var voice: String //xcode added this, when you click 'fix it' for protocol stub
let name = "Siri"
let voice = "Voice" //added by me, Compilation Error: voice is not settable, but protocol requires it.
}