ios - Xcode 10 代码完成占位符 — "T"是什么?

标签 ios swift code-completion xcode10

在 Xcode 10 代码完成中,占位符标记下方的文本前面有一个额外的 #T# (要查看是否如此,请将插入的代码模板复制并粘贴到其他文本编辑器中):

let alert = UIAlertController(
    title: <#T##String?#>, message: <#T##String?#>, 
    preferredStyle: <#T##UIAlertController.Style#>)

那是什么? “T”是指类型吗?它对我使用占位符有什么影响?

最佳答案

语法<#T##_A_##_B_#>用于指定占位符的默认代码段。占位符将显示为 _A_ ,但是当用户按下 Enter 键时,占位符将被替换为 _B_ .

占位符:

enter image description here

按回车键后:

enter image description here

在向观众展示某些内容时,这是一个有用的功能,因为与片段相比,我不需要记住每个片段的名称,我只需选择一个占位符并按 Enter 即可获得正确的片段代码。

编辑:

回答你的问题,确实看起来T指的是类型。如果您尝试用表达式替换占位符,例如 <#T##Example1##let i = 3#> ,占位符不会被 let i = 3 替换正如你所期望的那样。它被替换为 <<error type>> .

此外,这个占位符<#T##transform: (Error) throws -> U?##(Error) throws -> U?#>替换为:

{ (<#Error#>) -> U? in
    <#code#>
}

我的猜测是,当您在前面加上 T 时您告诉 Xcode 您将提供一个类型,然后 Xcode 会为该类型找到合适的默认值。

关于ios - Xcode 10 代码完成占位符 — "T"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51092865/

相关文章:

ide - 使用 PHPStorm for Dojo 完成代码(特别是 dojo.require)

ios - 第一次没有收到推送通知

Swift IOS 8 设计元素未在设备上显示

swift - 设备之间的 SKLabelNode 自定义大小

visual-studio - 像 netbeans 中的 ctrl+k 这样的 Visual Studio 代码完成?

xcode4 - 在 Prefix.pch 中包含 Constants.h 文件会破坏代码完成、语法突出显示

ios - Swift - 将 nil 核心数据字符串转换为可选值

iphone - iOS - 从网站加载文本在 TextView 中有 HTML 标签。需要删除它们

ios - 当不在相机视野中时停止 SKVideoNode 播放

swift - 如何使用特定目标运行 Xcode UI 测试