ios - 创建小写搜索字符串的正确方法 swift 3

标签 ios swift string search

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

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

 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 值(如果存在)并为我们提供一个非可选字符串数组,我们可以将其加入 joined(separator: String) 方法。

您可以将其用作

 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/

相关文章:

ios - 将 NSString 转换为 String 时,我的结果发生了变化

json - 难以获取 JSON 字典

ios - 在创建游戏的范围之外,如何在 iOS 中创建程序生成的可视化效果?

Python搜索文本文件,打印字符串后面的字符

java - DataOutputStream#writeBytes(String) 与 BufferedWriter#write(String)

ios - iOS推送通知的Certificates.p12文件中密码的作用是什么

ios - iOS 7开发人员-最小化应用会导致UIWebView嵌入式YouTube播放器停止播放

ios - 如何正确判断 Destination View Controller 类

inheritance - 在 Swift 中使用泛型、协议(protocol)和继承创建对象时的 EXC_BAD_ACCESS

php - 获取字符串包含 php pdo 的行