我需要在我的应用程序的搜索功能中使用字符串。我没有太多的编码经验,但是通过谷歌搜索、教程和一些试验和错误来获得。
下面的方法有效,它只创建了我需要的东西,但我注意到它大大减慢了编译时间,所以我认为有更好/更智能的方法来做到这一点?通过谷歌搜索,我没有得到太多答案。
let searchText: String? = ("\(self.noseTextView?.text)"
+"\(self.palateTextField?.text)"+"\(self.finishTextField?.text)"
+"\(self.overallTextField?.text)"+"\(self.otherTextField?.text)"
+"\(self.glassTextField?.text)"+"\(bottleName2)"
+"\(self.distilleryTextField?.text)").lowercased()
谁能教我一个更好的方法来达到同样的结果?
编辑:
一个适合我的代码的答案,(或者我对它的解释来自 Özgür Ersil,下面),这是可行的。
//creates lowercase String for labels to save compiling time
func getText(textLabel: UILabel)->String{
return textLabel.text!.lowercased()
}
//creates lowercase String for TextFields to save compiling time
func getTextTF(ui: UITextField)->String{
return ui.text!.lowercased()
}
//creates lowercase String for TextViewsto save compiling time
func getTextTV(ui: UITextView)->String{
return ui.text!.lowercased()
}
let searchText: String = self.getTextTV(ui: self.noseTextView) +
self.getTextTF(ui: self.palateTextField) + self.getTextTF(ui:
self.finishTextField) +
self.getTextTF(ui: self.overallTextField) + self.getTextTF(ui:
self.otherTextField) +
self.getTextTF(ui: self.glassTextField) + self.getTextTF(ui: self.bottleName) +
self.getTextTF(ui: self.distilleryTextField)
我使用此函数将可选字符串附加到单个字符串中
func append(optionalStrings arrStrings : [String?],separator: String = " ") -> String {
return arrStrings.flatMap{$0}.joined(separator: separator)
}
这个函数接受一个可选字符串数组作为参数
flatMap 是一个高阶函数,其目的是消除 arrayStrings 中的 nil 值(如果存在)并为我们提供一个非可选字符串数组,我们可以将其与 连接加入(分隔符:字符串) 方法。
你可以用这个
let arrOptionalStrings = [noseTextView?.text,
palateTextField?.text,
finishTextField?.text,
overallTextField?.text,
otherTextField?.text,
glassTextField?.text,
bottleName2,
distilleryTextField?.text
]
let searchText: String? = append(optionalStrings: [str1,str2].map({ $0?.lowercased() }))
关于ios - swift 3 创建小写搜索字符串的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43408069/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://ogeek.cn/) | Powered by Discuz! X3.4 |