2017-01-13 19 views
1

虽然我使用Xcode 8.1.2编辑代码行,但发生了两个问题。请帮我解决问题。未解决的标识符“连接”和“数组”不可用

  1. 使用未解决的识别符 '加入'

的Xcode 8.1.2指示未解析的标识符 '加入' 代码的 线的使用: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.'array”是不可用:请使用数组初始化器代替。 行代码:1

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

由于提前,

迈克

+0

对于第一个,return语句试图访问一个方法'join(_:,_ :)',这个方法对于被调用的作用域是不可用的(这不是一个已知的标准函数)。 – dfri

+0

'加入'是(我认为)古代Swift版本中的全局函数。你需要在Swift 3中使用'components.joined(separator:“”)' –

+0

...并且可能是'Array(models.regions.values).filter(...' – dfri

回答

0

(总结上述意见:)有一个在 斯威夫特3.没有全局join功能要连接的阵列字符串,使用

components.joined(separator: " ") 

其次,“‘阵’是不可用:请使用数组初始化程序,而不是” 意味着

model.regions.values.array 

应该

Array(model.regions.values) 

但是,没有必要创建一个数组,可以过滤 values序列直接:

if model.regions.values.filter({$0 == true}).count == 0 

然后可以简化为

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

感谢您的大力帮助!!! components.joined(separator:“”)很好用。如果!model.regions.values.contains(true)也是可行的。 –

+0

@MikeChen:不客气 - 如果这个答案解决了你的问题,那么您可以通过点击选中标记来接受*。 –

相关问题