Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使Xcode自动符合协议_Ios_Xcode_Swift_Interface_Code Generation - Fatal编程技术网

Ios 如何使Xcode自动符合协议

Ios 如何使Xcode自动符合协议,ios,xcode,swift,interface,code-generation,Ios,Xcode,Swift,Interface,Code Generation,当我使用原型表视图时,我必须始终遵守协议TableViewDataSource。我总是忘记需要实现什么方法,所以每次都要查看协议的源代码。这真的很费时 我认为Xcode必须有一个自动实现所需方法的特性,对吗?就像IntelliJ IDEA、Eclipse和Visual Studio一样 我想知道在哪里可以找到此功能。如果没有,是否有解决方法?至少我不必每次遵守协议时都打开协议的源代码 如果你不明白我的意思,这里有一些代码: 我有一个协议 protocol Hello { func doS

当我使用原型表视图时,我必须始终遵守协议
TableViewDataSource
。我总是忘记需要实现什么方法,所以每次都要查看协议的源代码。这真的很费时

我认为Xcode必须有一个自动实现所需方法的特性,对吗?就像IntelliJ IDEA、Eclipse和Visual Studio一样

我想知道在哪里可以找到此功能。如果没有,是否有解决方法?至少我不必每次遵守协议时都打开协议的源代码

如果你不明白我的意思,这里有一些代码:

我有一个协议

protocol Hello {
    func doStuff ()
}
当我遵从它时

class MyClass: Hello {

}
我经常记不起需要实现的方法的名称。如果Xcode具有将上述代码转换为以下代码的功能:

class MyClass: Hello {
    func doStuff () {
        code
    }
}

现在你明白我的意思了吗?我只是想问一下在哪里可以找到这样的功能。

如果我了解您的问题,那么这里有一个解决方法:

尝试将protocol定义为前缀的方法,如此处所示
hello
,这样您就不必记住这些方法,只要开始键入protocol name,XCODE就会提示您所有可用的方法,请参见此处:

如果您想要自动完成协议,请尝试
Xcode不会为您做这件事

如果您查看协议的文档,它清楚地标记了您必须实现的功能:


Xcode 9负责实施Swift数据源和委托的强制方法

UICollectionViewDataSource
为例,查看这些快照:

指示实现协议方法的警告:

通过单击“修复”按钮,它添加了所有必需的方法:


Xcode 9:您可以通过向密钥绑定集添加新的快捷方式来添加缺少的协议要求

  • 从顶部的Xcode菜单(左上)选择Preferences
  • 选择键绑定
  • 搜索有关协议的信息。您将发现名为
    Refactor->addmissingsprotocolrequirements
  • 按列上的键,然后添加快捷方式<代码>例如:cmd+shift+M
  • 现在您可以通过单击类名(或其扩展名)然后按快捷方式添加缺少的协议要求


    与Amjad的文章非常相似,Xcode 9/10在代码编辑器中提供了添加缺少的协议要求的功能

    只需“右键单击”类名:“重构”-->“添加缺少的协议要求”

    参见类似问题,链接答案是唯一的方法。在您创建了几个tableview控制器之后,这些方法将在您的内存中:)据我所知,这个问题与@AlessandroChiarotto的上述链接不同。这里的问题是关于在遵守协议时实现所需的功能。希望有人能很快知道答案。Xcode有一个优点:界面生成器,这是一个了不起的东西。关于代码和开发功能,它只是一个简单的文本编辑器,甚至不要将其与IntelliJ进行比较:/I我已经实现了一个,为Swift和ObjC缺少的方法提供建议。非常感谢!这很有帮助!对于IDE的一个缺点,糟糕的命名实践几乎不是有效的解决方案。它符合iOS命名实践,正如您在AppDelegate应用程序函数命名或tableView数据源命名中看到的那样。您也可以参考Raywalderlich尼斯漫游!:)我发现这相当令人讨厌,因为这阻碍了我的通用编程解决方案。我更喜欢通过重构添加缺少的协议需求的内置功能。这需要打开特定的设置吗?我仍然没有使用Xcode 9自动生成方法的选项。2@slackwars-您能分享一下您尝试过的协议吗。如果强制执行任何强制功能,则此警告/错误将可见。如果所有函数/方法都是可选的(或者如果您已经在代码中添加/实现了),则不会指示/显示此警告。class ViewController:UIViewController、UICollectionViewDelegate、UICollectionViewDataSource{链接到gist图像:[链接]我像你的例子一样添加了密钥。我按相同的键,但它没有显示我的协议方法。我在这里做错了什么请告诉我谢谢。。。