做个简单的记事本,效果如下:
主要使用UserDefaults(以前是NSUserDefaults)实现数据的持久化,将Array数据存储在沙盒里。
直接使用
1 2 3 4
| func syncStore(){ UserDefaults.standard.set(objects, forKey: "history") UserDefaults.standard.synchronize() }
|
存数据。
读取数据使用
1
| objects = UserDefaults.standard.value(forKey: "history") as! Array<Any>
|
在第一次启动的时候读数据会出错,因此需要判断是否为第一次启动,如果是第一次启动则需要初始化存储结构。
1 2 3 4 5 6 7
| let isFirstLaunch = UserDefaults.standard.string(forKey: "FirstLaunch") == nil if(isFirstLaunch){ UserDefaults.standard.set("false", forKey: "FirstLaunch") syncStore() }else{ objects = UserDefaults.standard.value(forKey: "history") as! Array<Any> }
|
插入数据的function:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| func insertNewObject(_ sender: Any) { let alertController = UIAlertController( title: "添加备忘", message: "请输入备忘内容", preferredStyle: UIAlertControllerStyle.alert) let insertAction = UIAlertAction( title: "确认", style: .default, handler: { (action: UIAlertAction) -> Void in print(alertController.textFields![0].text!) self.objects.insert(alertController.textFields![0].text!, at: 0) let indexPath = IndexPath(row: 0, section: 0) self.tableView.insertRows(at: [indexPath], with: .automatic) self.syncStore() }) let cancelAction = UIAlertAction(title: "取消", style: .cancel) alertController.addTextField { (textField:UITextField) in textField.placeholder = "请输入内容" } alertController.addAction(insertAction) alertController.addAction(cancelAction) self.present(alertController, animated: true, completion: nil) }
|