Swift 未解析标识符';加入';和';数组';不可用
当我使用Xcode 8.1.2编辑代码行时,出现了两个问题。请帮我解决这些问题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
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:不客气。–如果这个答案解决了您的问题,您可以通过单击复选标记接受它。