如何使用 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 在核心数据中搜索字符串?的主要内容,如果未能解决你的问题,请参考以下文章
使用 NSPredicate 对表视图中的核心数据进行排序 (Swift)
如何使用 swift 3 xcode 8 在核心数据中预加载数据库