Swift 内容筛选器功能不工作。。。Can';我找不到虫子

Swift 内容筛选器功能不工作。。。Can';我找不到虫子,swift,xcode,filter,Swift,Xcode,Filter,我在Swift的XCode 6游乐场中使用了一个内容过滤系统,其想法是,如果我输入一个包含多个单词的字符串(例如:“Apple Oranges Bananas”),函数会将该字符串分离成一个数组,然后使用这些单词中的任何一个在数据库中循环,如果有匹配项,则应返回true。所以,如果我输入一个完整的单词,我的函数将返回true,但如果我输入一个字母,函数将返回false。。。我使用了“RangeOfString”行,所以它应该一个字符一个字符地遍历单词,但我不知道。。真是难住了 这是密码

我在Swift的XCode 6游乐场中使用了一个内容过滤系统,其想法是,如果我输入一个包含多个单词的字符串(例如:“Apple Oranges Bananas”),函数会将该字符串分离成一个数组,然后使用这些单词中的任何一个在数据库中循环,如果有匹配项,则应返回true。所以,如果我输入一个完整的单词,我的函数将返回true,但如果我输入一个字母,函数将返回false。。。我使用了“RangeOfString”行,所以它应该一个字符一个字符地遍历单词,但我不知道。。真是难住了

这是密码

    // Playground - noun: a place where people can play

import UIKit

class Person {
    var name = ""
    var age = 0

    init(name: String, age:Int) {
        self.name = name
        self.age = age
    }
}

var filteredItems = [Person]()

var items = [ Person(name: "Anders", age: 23), Person(name: "Alice", age: 56), Person(name: "Amanda", age: 88)]

items.append(Person(name: "Andrew", age: 23))

func filterContentForSearchText(searchText : String) -> Bool
{
    var filtered = false

    //Filter the array using the filter method
    filteredItems = items.filter({( search : Person) -> Bool in

        let stringMatch = queryValidator(searchText, search.name)
        let intMatch = queryValidator(searchText, String(search.age))

        filtered = (stringMatch != false || intMatch != false)
        return (stringMatch != false || intMatch != false)
    })
    return filtered
}

func queryValidator(search : String, database : String) -> Bool
{
    //Function that splits search query into multiple querys
    let query = search.uppercaseString.componentsSeparatedByString(" ")
    var queryFound = false

    for(var i = 0; i < query.count; i++)
    {
        let match = query[i].uppercaseString.rangeOfString(database.uppercaseString)

        if(match != nil)
        {
            queryFound = true
        }
    }

    return queryFound
}


filterContentForSearchText("a")
//操场-名词:人们可以玩耍的地方
导入UIKit
班主任{
var name=“”
变量年龄=0
init(名称:String,年龄:Int){
self.name=名称
self.age=年龄
}
}
var filteredItems=[Person]()
var项目=[个人(姓名:“安德斯”,年龄:23岁)、个人(姓名:“爱丽丝”,年龄:56岁)、个人(姓名:“阿曼达”,年龄:88岁)]
项目.附加(人(姓名:“安德鲁”,年龄:23岁))
func filterContentForSearchText(searchText:String)->Bool
{
var过滤=假
//使用筛选方法筛选数组
filteredItems=items.filter({(搜索:Person)->Bool-in
让stringMatch=queryValidator(searchText,search.name)
让intMatch=queryValidator(searchText,String(search.age))
过滤=(stringMatch!=false | | intMatch!=false)
返回(stringMatch!=false | | intMatch!=false)
})
返回过滤
}
func queryValidator(搜索:字符串,数据库:字符串)->Bool
{
//将搜索查询拆分为多个查询的函数
let query=search.uppercaseString.componentsSeparatedByString(“”)
var queryFound=false
对于(var i=0;i

任何帮助都将不胜感激

string.rangeOfString不进行前缀匹配。因此,如果您使用“a”搜索,那么您的数组中没有任何人的名字是“a”。如果要进行前缀匹配,请尝试使用String.hasPrefix(如中所述)。

谢谢!我改用了hasPrefix方法,它能很好地满足我的需要