Swift Playgrounds Apple每个人都可以编写App练习代码

时间:2018-08-15 16:11:55

标签: swift

我试图弄清楚为什么这个特定的代码不会在操场上通过,我正在研究Apple提供的带有Swift的Everyone Can Code App Development应用程序。这是挑战:

现在用户可以登录了,他们需要能够在用户列表中进行搜索以找到他们的朋友。通常,可以通过让用户输入名称,然后循环浏览所有用户名来查看用户名是否包含输入的搜索词,从而完成此操作。稍后您将学习循环,因此现在您只需要经历一个循环即可。假设您正在搜索一个朋友,其用户名为StepChallenger。您在搜索栏中输入“步骤”,该应用程序开始搜索。当应用使用用户名“ stepchallenger”时,它将检查“ StepChallenger”是否包含“ step”。

在下面使用userName和searchName编写一条if-else语句,以检查userName是否包含搜索词。搜索不应区分大小写。

这是我的代码:

import Foundation
let userName = "StepChallenger"
let searchName = "step"

if userName.contains("step") && userName.lowercased() == searchName  {
print("We have found the user")

}

任何帮助将不胜感激,如果操作不正确,我深表歉意。预先感谢。

2 个答案:

答案 0 :(得分:0)

答案应该是:

QList<QString>

代替:

if userName.lowercased().contains(searchName) {
    print("We have found the user")
}

因为.lowercased()本质上将“ StepChallenger”变成“ stepchallenger”,然后.contains(searchName)检查“ stepchallenger”是否包含“ step”。

答案 1 :(得分:0)

由于if的结果为false,因此没有打印任何内容。让我们检查一下原因

  • 您的第一个条件userName.contains("step")

您的userName是“ StepChallenger”,您正在检查它是否包含“ step”。 ,因为您没有进行不区分大小写的检查。因此,自您使用false以来,第一个条件已经返回if,使整个false条件的求值为&&

  • 您的第二个条件userName.lowercased()是“ stepchallenger”,您正在检查它是否等于“ step”。不,它不是相同的字符串,因此它再次返回false

因此,最终print语句永远不会执行。您需要检查userName是否包含searchName的方法是将所有内容转换为相同的大小写并使用contains方法。

if userName.lowercased().contains(searchName.lowercased()) {
    print("User found!")
}

或者有一种caseInsensitiveCompare(_:)检查方法,您可以检出。