Ult*_*rus 6 parse-platform swift
我一直在尝试按照一些iOS Swift教程连接到Parse.com
loginViewController.fields = .UsernameAndPassword | .LogInButton | .PasswordForgotten | .SignUpButton | .Facebook | .Twitter
Run Code Online (Sandbox Code Playgroud)
loginViewController.fields = [.UsernameAndPassword, .LogInButton, .SignUpButton, .PasswordForgotten, .Facebook]
Run Code Online (Sandbox Code Playgroud)
我假设前者是Switch 1.x,而thelatter是Swift 2.从上下文看,它们看起来是做同样的事情,但我还没有找到语法变化的语言参考.非常难以搜索点,管道和逗号......有人可以解释每个片段中的语法吗?(我正在阅读语言规范,但实际上让应用程序工作会很有趣!)
旧的Swift 1语法基于您处理C和Objective-C中的选项集的方式:您将选项集存储在整数类型中,并使用按位运算符(|和&和~)来操作它们.因此.UsernameAndPassword | .LogInButton意味着一个选项集,其中包括.UsernameAndPassword和.LogInButton选项.在旧语法中,您使用nil表示空选项集(其中不包括任何选项),这基于非空集的语法并不明显.
Chris Lattner描述了WWDC 2015 Session 106中改变的语法:Swift中的新功能.首先,他描述了旧语法的问题:
问题是,当你得到你最终使用的其他语法时,它就不那么好了.你用nil创建一个空选项集 - 它没有意义,因为选项集和选项是完全不同的概念,它们被混合在一起.你使用按位运算来提取它们,这是一个痛苦且容易出错的问题,你很容易弄错.
然后他描述了新的方法:
但是Swift 2解决了这个问题.它使选项集像集一样.这意味着选项集和集合现在形成方括号.这意味着您将获得带有空方括号的空集,并且您可以使用完整的标准集API集来处理选项集.
新语法工作的原因是因为OptionSetType符合ArrayLiteralConvertible协议(间接地,通过符合SetAlgebraType).此协议允许使用数组文字初始化符合对象,方法是使用一个init元素列表.
在新的Swift 2语法中,[ .UsernameAndPassword, .LogInButton ]表示包含选项.UsernameAndPassword和.LogInButton选项的选项集.请注意,它看起来就像您可以初始化普通旧语法的语法Set:let intSet: Set<Int> = [ 17, 45 ].新语法使您明确指定一个空选项设置为[].
| 归档时间: |
|
| 查看次数: |
196 次 |
| 最近记录: |