Xcode中8说:“你想添加一个存根?”我怎么回答呢?

问题描述 投票:7回答:3

在Xcode中8,如果你声明一个类(或结构),符合一个协议,但还没有实现所需的方法(功能?)的Xcode会给此消息“类型‘ClassName’不符合协议‘ProtocolName’”这是真实的。

如果通过单击三角形打开错误,你会看到一些灰色的感叹号图标的项目。每个项目说“议定书要求的功能...你想添加一个存根?”我想添加一个存根!我该如何告诉它添加一个存根给我吗?

xcode8
3个回答
10
投票

raphh的答案是正确的,但这里的Xcode仍然是一个小马车(至少对我来说),

如果不编译后选择Fix-it正确的点号转换为感叹号,你不能让它再出现,除非你试图构建一个更多的时间。

建成后右:Dot error icon

如果你不这样做的Fix-it马上:exclamation mark error icon

你必须重新建立的时候,你有几种方法来实现再得到点图标,你没有做的第一个Fix-it


2
投票

只需点击Fix-it和Xcode中会增加你的存根你需要实现的方法。

像这样。请参阅:enter image description here

谢谢8 Xcode中,终于来了!


0
投票

是的,点击“修复”,如你所提到的协议的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.
}
© www.soinside.com 2019 - 2024. All rights reserved.