我正在尝试在swift中编写以下代码,但无法这样做:
目标 - C:
NSArray * seachArray = [sessionSearchResults filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(ProductModel* evaluatedObject, NSDictionary *bindings) {
return [evaluatedObject.productName rangeOfString:searchString options:NSCaseInsensitiveSearch].location != NSNotFound;
}]];
斯威夫特(我到目前为止)
func searchDisplayController(controller: UISearchDisplayController, shouldReloadTableForSearchString searchString: String!) -> Bool {
let filteredArray = searchArray.filter { (session: ProductModel) -> Bool in
//Contains String?
return session.productName == searchString
}
var S : String
for S in filteredArray {
println(S)
}
return true
}
好奇。没有进口基础,有没有实现这一目标?
答案 0 :(得分:1)
简短回答:不。
斯威夫特在它的班级和基础班之间有直接的桥接,例如:字符串到NSString。NSString有一套非常丰富的方法。不要害怕基金会,拥抱它。
但是,这意味着要导入Foundation。
您可以选择编写自己的原生Swift函数来替换Foundation API。如果你愿意,你可以在这里或那里为一个功能做到这一点,但这看起来很荒谬。基础课程背后有数百万行工业级,高效,经过良好测试的代码。它们是运行时环境的一部分。学会使用它们。