我是新手,很快就可以编程。我编写了一个应用程序,可以在其中向表视图添加一些元素。我通过FileManager在模拟器iPhone上保存了数据。现在,我想从表格视图中永久删除一个元素。
我使用了一种称为commit editStyle的方法来删除表视图中的一行。这是可行的,但是如果我重新启动应用程序,则该元素仍然存在。
//create the file
let dataFilePath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.appendingPathComponent("Item.plist")
//delete the file
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == UITableViewCell.EditingStyle.delete {
itemArray.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: UITableView.RowAnimation.automatic)
}
}
答案 0 :(得分:0)
这是要添加新项目
@IBAction func addNewToDoItem(_ sender: UIBarButtonItem) {
var textField = UITextField()
let alert = UIAlertController(title: "Neues Todo", message: "", preferredStyle: .alert)
let action = UIAlertAction(title: "ToDo hinzufügen", style: .default) { (action) in
// Item was der Nutzer ertsellen wird
let itemObject = Item(title: textField.text!) // hinzufügen, das was der Nutzer ins Textfield eingibt
self.itemArray.append(itemObject)
// Daten dauerhaft speichern
self.saveItems()
self.tableView.reloadData()
}
let cancelAction = UIAlertAction(title: "Abbrechen", style: .default) { (cancelAction) in
// Abbrechen
}
alert.addTextField { (alertTextField) in
alertTextField.placeholder = "Todo eintragen"
textField = alertTextField
}
alert.addAction(action)
alert.addAction(cancelAction)
present(alert, animated: true, completion: nil)
}
安全数据:
func saveItems() {
let encoder = PropertyListEncoder()
do {
let data = try encoder.encode(itemArray)
try data.write(to: dataFilePath!)
} catch {
print("Fehler beim schreiben der Dateien", error)
}
}
这是我的itemArray和他自己的类:
var itemArray = [Item]()
class Item: Codable { // Aus Encodable und Decodable wird Codable
var title : String = ""
var done : Bool = false
init(title : String) {
self.title = title
}
init(title: String, done: Bool) {
self.title = title
self.done = done
}
}