swift3 noobはこちらですので、これは愚かな質問であればよろしくお願いいたします。コードの複製 - swift3
私はこの問題を数回見つけましたが、解決できませんでした。コードの重複を避けるにはどうすればいいですか?
@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")
だけNSFetchRequest
を返すreturn関数を作るあなた
のようになりますNSFetchRequest
を返す関数を作成し、あなたが試してみました何を、あなたが取得しているかのエラーを示してください。 – shallowThought
関数内で複数回使用しているコードを配置し、その関数を呼び出すのはなぜですか? –
'NSManagedObject'サブクラスを使用すると、定型コードがたくさん使われなくなります。次に、 'let request = Users.fetchRequest()'と書くことができます。 – vadian