iOS Swift教程 Core Data (一)Hello Core Data
-
使用Xcode的model编辑器创建数据对象的model data。
-
添加新的记录到CoreData中
-
从CoreData中获取记录集合
-
显示记录到table view中
- 在创建工程时选择使用core data
- 编辑.xcdatamodeld文件,添加entity person,添加attribute name,类型为String
- 初始化,读取和修改core data数据
@IBOutlet weak var tableView: UITableView! var people = [NSManagedObject]()
-
从Core Data数据库中读取数据
-
override func viewWillAppear(animated: Bool) { let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate let managedContext = appDelegate.managedObjectContext! let fetchRequest = NSFetchRequest(entityName: "Person") var error: NSError? let fetchResults = managedContext.executeFetchRequest(fetchRequest, error: &error) as [NSManagedObject]? if let results = fetchResults { people = results } else { println("Could not fetch (error), (error!.userInfo)") } }
-
读取数据填入table view中
-
// MARK: UITableViewDataSource func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return people.count } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as UITableViewCell let person = people[indexPath.row] cell.textLabel?.text = person.valueForKey("name") as String? return cell }
-
添加用户名并保存到Core Data数据库中
-
// MARK: private func saveName(name: String) { let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate let managedContext = appDelegate.managedObjectContext! let entity = NSEntityDescription.entityForName("Person", inManagedObjectContext: managedContext) let person = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext) person.setValue(name, forKey: "name") var error:NSError? if !managedContext.save(&error) { println("Could not save (error), (error?.userInfo)") } people.append(person) } @IBAction func addName(sender: AnyObject) { var alert = UIAlertController(title: "New name", message: "Add a new name", preferredStyle: UIAlertControllerStyle.Alert) let saveAction = UIAlertAction(title: "Save", style: .Default, handler: { (action: UIAlertAction!) -> Void in let textField = alert.textFields![0] as UITextField self.saveName(textField.text) self.tableView.reloadData() }) let cancelAction = UIAlertAction(title: "Cancel", style: .Default, handler: { (action: UIAlertAction!) -> Void in }) alert.addTextFieldWithConfigurationHandler({ (textField: UITextField!) -> Void in }) alert.addAction(saveAction) alert.addAction(cancelAction) presentViewController(alert, animated: true, completion: nil) }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 【总结】PHP常见面试题汇总(一)
- 下一篇: 正则 数字与小数的匹配