[Xcode 实际操作]七、文件与数据-(12)数据持久化存储框架CoreData的使用:查找CoreData中的数据

目录:[Swift]Xcode实际操作

本文将演示如何查找数据持久化对象。

在项目导航区,打开视图控制器的代码文件【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 }
原文地址:https://www.cnblogs.com/strengthen/p/10049628.html