OStack程序员社区-中国程序员成长平台

标题: ios - swift 3 创建小写搜索字符串的正确方法 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-11 19:29
标题: ios - swift 3 创建小写搜索字符串的正确方法

我需要在我的应用程序的搜索功能中使用字符串。我没有太多的编码经验,但是通过谷歌搜索、教程和一些试验和错误来获得。

下面的方法有效,它只创建了我需要的东西,但我注意到它大大减慢了编译时间,所以我认为有更好/更智能的方法来做到这一点?通过谷歌搜索,我没有得到太多答案。

 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)



Best Answer-推荐答案


我使用此函数将可选字符串附加到单个字符串中

 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/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4