lit-monster / test

1 stars 0 forks source link

データ削除 #2

Open masakazozaki opened 2 years ago

masakazozaki commented 2 years ago

これ絶対やろう.絶対終わらせよう

masakazozaki commented 2 years ago

https://swift-study.com/coredata-nsfetchedresultscontrollerdelegate/

masakazozaki commented 2 years ago

@youmi-ngs この辺が使えそう

masakazozaki commented 2 years ago
@IBAction func addTapped(sender: AnyObject) {
        do {
            let book = NSEntityDescription.insertNewObjectForEntityForName("Book", inManagedObjectContext: fetchedResultsController.managedObjectContext) as! Book
            book.publisher = "早川書房"
            book.title = "虐殺器官"
            book.price = 583
            try fetchedResultsController.managedObjectContext.save()
        } catch {
            print(error)
            abort()
        }
    }

    @IBAction func updateTapped(sender: AnyObject) {
        let fetchRequest = NSFetchRequest(entityName: "Book")
        let predicate = NSPredicate(format: "publisher=%@", "早川書房") //削除するオブジェクトの検索条件
        fetchRequest.predicate = predicate
        do {
            let books = try managedObjectContext.executeFetchRequest(fetchRequest) as! [Book]
            for book in books {
                book.title = "★" + book.title
            }
            try fetchedResultsController.managedObjectContext.save()
        } catch {
            print(error)
        }
    }

    @IBAction func deleteTapped(sender: AnyObject) {
        let fetchRequest = NSFetchRequest(entityName: "Book")
        let predicate = NSPredicate(format: "publisher=%@", "早川書房") //削除するオブジェクトの検索条件
        fetchRequest.predicate = predicate
        do {
            let books = try managedObjectContext.executeFetchRequest(fetchRequest) as! [Book]
            for book in books {
                fetchedResultsController.managedObjectContext.deleteObject(book)
            }
            try fetchedResultsController.managedObjectContext.save()
        } catch {
            print(error)
        }
    }

これでCRUDいける気がしてきた

masakazozaki commented 2 years ago

DataManagerにある程度処理を書いて,それをViewControllerに呼び出す形がいいと思う

masakazozaki commented 2 years ago

https://swift-study.com/coredata-nsfetchedresultscontrollerdelegate/

保存も前みたQiitaの記事のやり方じゃなくてこっちの方が自然かもしれん.全部やり直した方が早いかも