diff --git a/Example/IceCream_Example/OwnersViewController.swift b/Example/IceCream_Example/OwnersViewController.swift index d3a32d4f..3942f1a2 100644 --- a/Example/IceCream_Example/OwnersViewController.swift +++ b/Example/IceCream_Example/OwnersViewController.swift @@ -76,21 +76,28 @@ extension OwnersViewController: UITableViewDelegate { func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { guard indexPath.row < owners.count else { return } let owner = owners[indexPath.row] - let viewController = OwnerDetailViewController(cats: Array(owner.cats)) + let viewController = OwnerDetailViewController(cats: Array(owner.cats).filter { !$0.isDeleted }) navigationController?.pushViewController(viewController, animated: true) } func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? { - let addAction = UITableViewRowAction(style: .default, title: "Add cat") { (_, ip) in + let addCatAction = UITableViewRowAction(style: .default, title: "Add cat") { (_, ip) in guard ip.row < self.owners.count else { return } let owner = self.owners[ip.row] let newCat = Cat() - newCat.name = "Cat No.\(owner.cats.count)" + newCat.name = "\(owner.name)'s No.\(owner.cats.count + 1) cat" newCat.age = ip.row try! self.realm.write { owner.cats.append(newCat) } } + let deleteCatAction = UITableViewRowAction(style: .default, title: "Delete cat") { (_, ip) in + guard ip.row < self.owners.count else { return } + let owner = self.owners[ip.row] + try! self.realm.write { + owner.cats.last?.isDeleted = true + } + } let deleteAction = UITableViewRowAction(style: .destructive, title: "Delete") { (_, ip) in let alert = UIAlertController(title: NSLocalizedString("caution", comment: "caution"), message: NSLocalizedString("sure_to_delete", comment: "sure_to_delete"), preferredStyle: .alert) let deleteAction = UIAlertAction(title: NSLocalizedString("delete", comment: "delete"), style: .destructive, handler: { (action) in @@ -105,7 +112,7 @@ extension OwnersViewController: UITableViewDelegate { alert.addAction(deleteAction) self.present(alert, animated: true, completion: nil) } - return [addAction, deleteAction] + return [addCatAction, deleteCatAction, deleteAction] } } diff --git a/IceCream/Classes/CKRecordConvertible.swift b/IceCream/Classes/CKRecordConvertible.swift index 4234bf91..fcb23a7b 100644 --- a/IceCream/Classes/CKRecordConvertible.swift +++ b/IceCream/Classes/CKRecordConvertible.swift @@ -121,15 +121,15 @@ extension CKRecordConvertible where Self: Object { var referenceArray = [CKRecord.Reference]() let wrappedArray = list._rlmArray for index in 0..