Swift 2.1 如何创建谓词
Swift 2.1 how to create predicate
编译器抱怨他的代码段并且不确定如何修复:
NSProcessInfo.processInfo().environment.contains("UITESTING")
它抱怨它 cannot convert value of type STring to expected argument type '@noescape((String, String)) throws -> Bool
我正在使用 Xcode 7.3.1 和 Swift 2.2
NSProcessInfo.processInfo().environment
returns 一个 [String : String]
字典。
要在字典上使用 contains
,您必须传递闭包,而不是字符串。
Swift2 的示例:
// This is just to make the answer easier to read
let env = NSProcessInfo.processInfo().environment
测试 keys 是否包含您的字符串:
let result = env.contains { [=11=].0.containsString("UITESTING") }
或测试是否相等,例如:
let result = env.contains { [=12=].0 == "UITESTING" }
测试值是否包含您的字符串:
let result = env.contains { [=13=].1.containsString("UITESTING") }
或等于:
let result = env.contains { [=14=].1 == "UITESTING" }
[=20=]
是字典中的每一项,.0
是键,.1
是值。
为了更好地理解,这里是长格式语法:
let result = env.contains { (key, value) in key.containsString("UITESTING") }
并且在Swift3中,以防有人需要它:
let env = ProcessInfo.processInfo.environment
let result = env.contains { [=16=].key.contains("UITESTING") }
let result = env.contains { [=16=].value.contains("UITESTING") }
let result = env.contains { (key, value) in key.contains("UITESTING") }
编译器抱怨他的代码段并且不确定如何修复:
NSProcessInfo.processInfo().environment.contains("UITESTING")
它抱怨它 cannot convert value of type STring to expected argument type '@noescape((String, String)) throws -> Bool
我正在使用 Xcode 7.3.1 和 Swift 2.2
NSProcessInfo.processInfo().environment
returns 一个 [String : String]
字典。
要在字典上使用 contains
,您必须传递闭包,而不是字符串。
Swift2 的示例:
// This is just to make the answer easier to read
let env = NSProcessInfo.processInfo().environment
测试 keys 是否包含您的字符串:
let result = env.contains { [=11=].0.containsString("UITESTING") }
或测试是否相等,例如:
let result = env.contains { [=12=].0 == "UITESTING" }
测试值是否包含您的字符串:
let result = env.contains { [=13=].1.containsString("UITESTING") }
或等于:
let result = env.contains { [=14=].1 == "UITESTING" }
[=20=]
是字典中的每一项,.0
是键,.1
是值。
为了更好地理解,这里是长格式语法:
let result = env.contains { (key, value) in key.containsString("UITESTING") }
并且在Swift3中,以防有人需要它:
let env = ProcessInfo.processInfo.environment
let result = env.contains { [=16=].key.contains("UITESTING") }
let result = env.contains { [=16=].value.contains("UITESTING") }
let result = env.contains { (key, value) in key.contains("UITESTING") }