如何使用 swift 3 在核心数据中搜索字符串?

Posted

技术标签:

【中文标题】如何使用 swift 3 在核心数据中搜索字符串?【英文标题】:How I search a string in core data with swift 3? 【发布时间】:2017-07-04 15:55:05 【问题描述】:

我想在我的数据库中搜索一个字符串,它会不断返回核心数据中的所有记录。我在这里看到的其他问题没有用。建议?

var users:[Users] = []

    override func viewDidLoad() 
        super.viewDidLoad()

        let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

        let myrequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")

        let predicate = NSPredicate(format: "name = '%@'", "alex")
        myrequest.predicate = predicate

        do
            users = try context.fetch(myrequest) as! [Users]

        catch
            print("error")
        


    

【问题讨论】:

这样设置会得到什么:let predicate = NSPredicate(format: "name = 'alex'") ? 所有记录:/ 好的——那么你还有一些奇怪的事情发生了。仔细检查您的字段名称、记录集等。 【参考方案1】:

它现在正在工作。这是最终的代码。也许它会在未来对某人有所帮助:) 谢谢你们的帮助。

let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

        let query:NSFetchRequest<Users> = Users.fetchRequest()
        let key = "alex"

        let predicate = NSPredicate(format: "name contains[c] %@", key)
        query.predicate = predicate

        do
            users = try context.fetch(query)
            print(users.count)

        catch
            print("error")
        

【讨论】:

【参考方案2】:

您不应在谓词中使用单引号。试试这个:

let predicate = NSPredicate(format: "name = %@", "alex")
myrequest.predicate = predicate

【讨论】:

【参考方案3】:

的情况下尝试这样做

users = try context.fetch(Users.fetchRequest())

【讨论】:

继续获取所有记录

以上是关于如何使用 swift 3 在核心数据中搜索字符串?的主要内容,如果未能解决你的问题,请参考以下文章

快速更新核心数据对象 3

如何在swift中使用字符串获取

使用 NSPredicate 对表视图中的核心数据进行排序 (Swift)

如何使用 swift 3 xcode 8 在核心数据中预加载数据库

带有核心数据的 TableView 中的搜索栏(使用 Swift)

如何在 swift 3 中从核心数据中删除对象