转换为Xcode的最新Swift语法不能正确转换Set相关代码。代码产生相反的结果

时间:2016-01-23 05:46:36

标签: swift set swift2 xcode7

如果您一直在使用Swift 1.2并使用Set使用Set(arrayLiteral:“...”),则自动转换不会正确转换此类操作。过去在Swift 1.2中传递的内容将在Swift 2.0中失败

例如,如果你的Swift 1.2代码是

var charsSet:Set<Character> = Set("abcdefghijklmnopqrstuvwxyz_")
if charsSet.isStrictSupersetOf(password.lowercaseString)
{
    print("true")
} else {
    print("false")
}

然后转换为最新的Swift语法创建此代码。

let charsSet = Set(arrayLiteral: "abcdefghijklmnopqrstuvwxyz_")
let passwordSet = Set(arrayLiteral: password.lowercaseString)
if charsSet.isStrictSupersetOf(passwordSet)
{
    print("true")
} else {
    print("false")
}

在这种情况下,结果将相反。在Swift 2.0中传递的内容现在将在Swift 2.0中失败

enter image description here

1 个答案:

答案 0 :(得分:1)

自动转换的代码应更改为此。

//Corrected code for Swift 2.0
let charsSet2 = Set("abcdefghijklmnopqrstuvwxyz_".characters)
let passwordSet2 = Set(password.lowercaseString.characters)
if charsSet2.isStrictSupersetOf(passwordSet2)
{
    print("true")
} else {
    print("false")
}

enter image description here