Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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
Swift 未解析标识符';加入';和';数组';不可用_Swift - Fatal编程技术网

Swift 未解析标识符';加入';和';数组';不可用

Swift 未解析标识符';加入';和';数组';不可用,swift,Swift,当我使用Xcode 8.1.2编辑代码行时,出现了两个问题。请帮我解决这些问题 使用未解析的标识符“join” Xcode 8.1.2表示使用未解析的标识符“join” 代码行:6 func countryFromFilename(_ filename: String) -> String { var name = filename.components(separatedBy: "-")[1] let length: Int = name.char

当我使用Xcode 8.1.2编辑代码行时,出现了两个问题。请帮我解决这些问题

  • 使用未解析的标识符“join”
  • Xcode 8.1.2表示使用未解析的标识符“join” 代码行:6

        func countryFromFilename(_ filename: String) -> String {
            var name = filename.components(separatedBy: "-")[1]
            let length: Int = name.characters.count
            name = (name as NSString).substring(to: length - 4)
            let components = name.components(separatedBy: "_")
            return join(" ", components)
        }
    
    2.“数组”不可用:请改用数组初始值设定项。 代码行:1

            if model.regions.values.array.filter({$0 == true}).count == 0 {
                model.toggleRegion(regionNames[defaultRegionIndex])
                switches[defaultRegionIndex].isOn = true
                displayErrorDialog()
    
    提前感谢,

    Mike

    (总结上述评论:)中没有全局
    join
    功能 斯威夫特3。要连接字符串数组,请使用

    components.joined(separator: " ")
    
    其次,“'array'不可用:请改用数组初始值设定项” 意味着

    model.regions.values.array
    
    应该是

    Array(model.regions.values)
    
    但是,不需要创建数组,您可以筛选
    直接顺序:

    if model.regions.values.filter({$0 == true}).count == 0
    
    这反过来又可以简化为

    if !model.regions.values.contains(true)
    

    对于第一个函数,return语句试图访问一个方法
    join(:,:)
    ,该方法在调用它的范围内不可用(这不是一个已知的标准函数)。
    join
    在古代Swift版本中是(我认为)一个全局函数。您需要在Swift 3中加入组件(分隔符:“”)。。。。可能是
    Array(models.regions.values).filter(…
    …或者干脆
    model.regions.values.filter(…)
    …然后考虑在中读取非古代Swift的当前状态。如果您的完整代码库是古代的,那么在尝试使用现代Swift进行更新时,您将遇到许多类似的情况。还要注意,使用过滤器调用的条件,
    $0==true
    ,可以简单地测试
    $0
    .filter({$0})..
    )。感谢您的帮助!!!components.joined(分隔符:“”)很好用。if!model.regions.values.contains(true)也可以用。@MikeChen:不客气。–如果这个答案解决了您的问题,您可以通过单击复选标记接受它。