[Xcode 实际操作]七、文件与数据-(12)数据持久化存储框架CoreData的使用:查找CoreData中的数据
v
本文将演示如何查找数据持久化对象。
在项目导航区,打开视图控制器的代码文件【ViewController.swift】
1 import UIKit 2 //引入数据持久化存储框架【CoreData】 3 import CoreData 4 5 class ViewController: UIViewController { 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 // Do any additional setup after loading the view, typically from a nib. 10 11 self.addUser() 12 13 //获得当前程序的应用代理 14 let appDelegate:AppDelegate = UIApplication.shared.delegate as! AppDelegate 15 //通过应用代理对象,获得管理对象上下文 16 let managedObjectContext = appDelegate.persistentContainer.viewContext 17 18 //通过管理对象上下文,根据实体的名称,获得实体对象 19 let entity = NSEntityDescription.entity(forEntityName: "User", 20 in: managedObjectContext) 21 22 //创建一个数据提取请求对象 23 let request = NSFetchRequest<User>(entityName: "User") 24 //设置提取数据的偏移值 25 request.fetchOffset = 0 26 //设置提取数据的数量 27 request.fetchLimit = 10 28 //继续设置需要提取数据的实体对象 29 request.entity = entity 30 31 //然后创建一个谓词对象,设置提取数据的查询条件。 32 //谓词被用来指定数据被获取,或者过滤的方式 33 let predicate = NSPredicate(format: "userName= 'John' ", "") 34 //设置数据提取请求对象的谓词属性 35 request.predicate = predicate 36 37 //添加一条异常捕捉语句,用于执行数据的查询操作 38 do{ 39 //使用try语句,执行管理对象上下文的数据提取操作, 40 //并把提取的结果,存储在一个数组中 41 let items = try managedObjectContext.fetch(request) 42 //创建一个循环语句,对提取结果进行遍历操作 43 for user:User in items 44 { 45 //在控制台打印输出相关日志 46 print("userName=\(user.userName!)") 47 print("password=\(user.password!)") 48 } 49 50 } 51 catch{ 52 print("获取数据失败。") 53 } 54 } 55 56 func addUser() 57 { 58 //获得当前程序的应用代理 59 let appDelegate:AppDelegate = UIApplication.shared.delegate as! AppDelegate 60 //通过应用代理对象,获得管理对象上下文 61 let managedObjectContext = appDelegate.persistentContainer.viewContext 62 63 //通过管理对象上下文,插入一条实体数据 64 let newUser = NSEntityDescription.insertNewObject(forEntityName: "User", 65 into: managedObjectContext) as! User 66 67 //设置实体的用户名属性的内容 68 newUser.userName = "John" 69 //设置实体的密码属性的内容 70 newUser.password = "123456" 71 72 //添加一条异常捕捉语句,用于执行数据的插入操作 73 do 74 { 75 //使用try语句,执行管理对象上下文的存储操作,插入实体对象 76 try managedObjectContext.save() 77 //在控制台打印输出日志 78 print("Success to save data.") 79 } 80 catch 81 { 82 print("Failed to save data.") 83 } 84 } 85 override func didReceiveMemoryWarning() { 86 super.didReceiveMemoryWarning() 87 // Dispose of any resources that can be recreated. 88 } 89 }