【发布时间】:2019-12-18 22:48:36
【问题描述】:
如何获取类似于 SQL SELECT * FROM user where username="something" 中的 CoreData 值
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let db = appDelegate.persistentContainer.viewContext
let request : NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName: "User")
let predicate = NSPredicate(format: "username='\(usernameLabel.text!)'")
request.predicate = predicate
do{
let result = try db.fetch(request) as! [NSManagedObject]
var get_email : String = ""
for item in result {
if let email = (item as AnyObject).value(forKey: "email") as? String {
get_email.append(email)
}
}
emailTextField.text = get_email
}
catch let error as NSError{
print(error)
}
在上面的代码中,输出将类似于tester1@tester.comtester2@tester.com 它实际上获取整个电子邮件列。
【问题讨论】:
-
您确定用户名字段是唯一的吗?您最好在谓词中使用占位符而不是字符串插值,否则它看起来基本上没问题。
-
@StephenDarlington 哦,谢谢。我想我有问题。我忘记在注册页面上进行重复检查
-
拜托,
(item as AnyObject).value(forKey: "email") as? String的语法太可怕了。注解获取请求NSFetchRequest<User>,删除as! [NSManagedObject]得到字符串值if let email = item.email
标签: ios swift core-data swift5