菜鸟教程小白 发表于 2022-12-11 19:29:49

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


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

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

<pre><code> let searchText: String? = (&#34;\(self.noseTextView?.text)&#34;
+&#34;\(self.palateTextField?.text)&#34;+&#34;\(self.finishTextField?.text)&#34;
+&#34;\(self.overallTextField?.text)&#34;+&#34;\(self.otherTextField?.text)&#34;
+&#34;\(self.glassTextField?.text)&#34;+&#34;\(bottleName2)&#34;
+&#34;\(self.distilleryTextField?.text)&#34;).lowercased()
</code></pre>

<p>谁能教我一个更好的方法来达到同样的结果?</p>

<p>编辑:</p>

<p>一个适合我的代码的答案,(或者我对它的解释来自 Özgür Ersil,下面),这是可行的。</p>

<pre><code>//creates lowercase String for labels to save compiling time
func getText(textLabel: UILabel)-&gt;String{
    return textLabel.text!.lowercased()
}
    //creates lowercase String for TextFields to save compiling time
func getTextTF(ui: UITextField)-&gt;String{
    return ui.text!.lowercased()
}
    //creates lowercase String for TextViewsto save compiling time
func getTextTV(ui: UITextView)-&gt;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)
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我使用此函数将可选字符串附加到单个字符串中</p>

<pre><code> func append(optionalStrings arrStrings : ,separator: String = &#34; &#34;) -&gt; String {

      return arrStrings.flatMap{$0}.joined(separator: separator)
}
</code></pre>

<p>这个函数接受一个可选字符串数组作为参数</p>

<p><strong>flatMap</strong> 是一个高阶函数,其目的是消除 arrayStrings 中的 nil 值(如果存在)并为我们提供一个非可选字符串数组,我们可以将其与 <strong> 连接加入(分隔符:字符串)</strong> 方法。</p>

<p>你可以用这个</p>

<pre><code> let arrOptionalStrings = [noseTextView?.text,
      palateTextField?.text,
      finishTextField?.text,
      overallTextField?.text,
      otherTextField?.text,
      glassTextField?.text,
      bottleName2,
      distilleryTextField?.text
    ]
let searchText: String? = append(optionalStrings: .map({ $0?.lowercased() }))
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - swift 3 创建小写搜索字符串的正确方法,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/43408069/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/43408069/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - swift 3 创建小写搜索字符串的正确方法