【发布时间】:2017-04-24 12:15:41
【问题描述】:
swift3 noob 在这里,如果这是一个愚蠢的问题,请原谅。
我曾多次遇到此问题,但一直无法解决。如何避免下面的代码重复。
@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()
如您所见,下面的代码在两个按钮中都有重复。我怎样才能避免这种情况?我试图用一种方法编写它,但我一定是做错了什么,这会引发很多错误。
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()
标签: swift3