代码复制-swift3
这里是swift3 noob,如果这是个愚蠢的问题,请原谅 我曾多次遇到这个问题,但一直无法解决。如何避免下面的代码重复代码复制-swift3,swift3,Swift3,这里是swift3 noob,如果这是个愚蠢的问题,请原谅 我曾多次遇到这个问题,但一直无法解决。如何避免下面的代码重复 @IBAction func logOutButton(_ sender: Any) { var userEntered = usernameText.text! let appDelegate = UIApplication.shared.delegate as! AppDelegate let context = appDelegate.per
@IBAction func logOutButton(_ sender: Any) {
var userEntered = usernameText.text!
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")
request.predicate = NSPredicate(format: "username = %@", "xyz")
do {
let results = try context.fetch(request)
} catch {
print ("Delete failed")
}
}
@IBAction func submitButton(_ sender: Any) {
var users = [String]()
var userEntered = usernameText.text!
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")
let newValue = NSEntityDescription.insertNewObject(forEntityName: "Users", into: context)
newValue.setValue(userEntered, forKey: "username")
request.returnsObjectsAsFaults = false
do {
try context.save()
@iAction func logOutButton(\uSender:Any){
var userEntered=usernameText.text!
让appDelegate=UIApplication.shared.delegate为!appDelegate
让上下文=appDelegate.persistentContainer.viewContext
let request=NSFetchRequest(entityName:“用户”)
request.predicate=NSPredicate(格式:“用户名=%@”,“xyz”)
做{
let results=try context.fetch(请求)
}抓住{
打印(“删除失败”)
}
}
@iAction func submitButton(\发送方:任意){
var users=[String]()
var userEntered=usernameText.text!
让appDelegate=UIApplication.shared.delegate为!appDelegate
让上下文=appDelegate.persistentContainer.viewContext
let request=NSFetchRequest(entityName:“用户”)
让newValue=NSEntityDescription.insertNewObject(forEntityName:“用户”,插入:上下文)
setValue(用户输入,forKey:“用户名”)
request.returnsObjectsAsFaults=false
做{
尝试context.save()
正如你所看到的,下面的代码在两个按钮中都是重复的。我如何避免这种情况呢?我曾尝试用一种方法编写它,但我一定是做错了什么,这会引发很多错误
var userEntered = usernameText.text!
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")
var userEntered=usernameText.text!
让appDelegate=UIApplication.shared.delegate为!appDelegate
让上下文=appDelegate.persistentContainer.viewContext
let request=NSFetchRequest(entityName:“用户”)
谢谢只需创建一个返回函数,返回一个
NSFetchRequest
func getFetchRequest() -> NSFetchRequest {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")
return request
}
func getFetchRequest()->NSFetchRequest{
让appDelegate=UIApplication.shared.delegate为!appDelegate
让上下文=appDelegate.persistentContainer.viewContext
let request=NSFetchRequest(entityName:“用户”)
退货申请
}
创建一个返回NSFetchRequest的函数
func getRequest() -> NSFetchRequest {
var userEntered = usernameText.text!
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")
}
请说明您尝试了什么以及遇到了什么错误。为什么不将您多次使用的代码放在一个函数中,然后调用该函数?使用
NSManagedObject
子类,它避免了大量样板代码。然后您可以编写let request=Users.fetchRequest()
@IBAction func logOutButton(_ sender: Any) {
let request = getRequest()
request.predicate = NSPredicate(format: "username = %@", "xyz")
do {
let results = try context.fetch(request)
} catch {
print ("Delete failed")
}
}