//这是插入数据的方法
import UIKit
//引入数据持久化框架
import CoreData
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// 获得当前程序的应用代理
let appDelegate:AppDelegate = UIApplication.shared.delegate as! AppDelegate
// 通过应用代理对象,获得管理对象上下文
let managedObjectContext = appDelegate.persistentContainer.viewContext
// 通过管理对象上下文插入一条实体数据
let newUser = NSEntityDescription.insertNewObject(forEntityName: "User", into: managedObjectContext) as! User
// 设置实体的用户名,密码属性的内容
newUser.userName = "John"
newUser.password = "123"
do{
// 插入实体对象
try managedObjectContext.save()
print("Success to save data.")
} catch{
print("Failed to save data.")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
//这是查找数据的方法
import UIKit
//引入数据持久化框架
import CoreData
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// 获得当前程序的应用代理
let appDelegate:AppDelegate = UIApplication.shared.delegate as! AppDelegate
// 通过应用代理对象获得管理对象上下文
let managedObjectContext = appDelegate.persistentContainer.viewContext
// 通过管理对象上下文,获得实体名称,获得实体对象
let entity = NSEntityDescription.entity(forEntityName: "User", in: managedObjectContext)
// 创建一个数据提取请求对象
let request = NSFetchRequest<User>(entityName: "User")
// 设置提取数据的偏移值
request.fetchOffset = 0
// 设置提取数据的数量
request.fetchLimit = 10
// 设置需要提取数据的实体对象
request.entity = entity
// 创建一个谓词对象,设置提取数据的查询条件。谓词被用来指定数据被获取,或者过滤的方式
let predicate = NSPredicate(format: "userName= 'John' ", "")
// 设置数据提取请求的谓词属性
request.predicate = predicate
do{
// 执行管理对象上下文数据提取的操作,并存入一个数组
let results:[AnyObject]? = try managedObjectContext.fetch(request)
// 对提取结果进行遍历
for user:User in results as! [User]{
print("userName=\(String(describing: user.userName))")
print("password=\(String(describing: user.password))")
}
} catch{
print("Failed to fetch data.")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
//这是删除数据
import UIKit
//引入数据持久化框架
import CoreData
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// 获得当前程序的应用代理
let appDelegate:AppDelegate = UIApplication.shared.delegate as! AppDelegate
// 通过应用代理对象获得管理对象上下文
let managedObjectContext = appDelegate.persistentContainer.viewContext
// 通过管理对象上下文,获得实体名称,获得实体对象
let entity = NSEntityDescription.entity(forEntityName: "User", in: managedObjectContext)
// 创建一个数据提取请求对象
let request = NSFetchRequest<User>(entityName: "User")
// 设置提取数据的偏移值
request.fetchOffset = 0
// 设置提取数据的数量
request.fetchLimit = 10
// 设置需要提取数据的实体对象
request.entity = entity
do{
// 执行管理对象上下文数据的提取操作,并存入一个数组
let results:[AnyObject]? = try managedObjectContext.fetch(request)
// 对提取结果进行遍历
for user:User in results as! [User]{
// 删除遍历到的实体对象
managedObjectContext.delete(user)
}
// 保存删除后的操作
try managedObjectContext.save()
// 重新提取删除后的数据
let results2:[AnyObject]? = try managedObjectContext.fetch(request)
// 重新遍历提取结果
for user:User in results2 as! [User]{
print("userName=\(String(describing: user.userName))")
print("password=\(String(describing: user.password))")
}
} catch{
print("Failed to fetch data.")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
//这是编辑数据的方法
import UIKit
//引入数据持久化框架
import CoreData
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// 获得当前程序的应用代理
let appDelegate:AppDelegate = UIApplication.shared.delegate as! AppDelegate
// 通过应用代理对象获得管理对象上下文
let managedObjectContext = appDelegate.persistentContainer.viewContext
// 通过管理对象上下文,获得实体名称,获得实体对象
let entity = NSEntityDescription.entity(forEntityName: "User", in: managedObjectContext)
// 创建一个数据提取请求对象
let request = NSFetchRequest<User>(entityName: "User")
// 设置提取数据的偏移值
request.fetchOffset = 0
// 设置提取数据的数量
request.fetchLimit = 10
// 设置需要提取数据的实体对象
request.entity = entity
do{
// 执行管理对象上下文数据的查询和编辑操作,并存入一个数组
let results:[AnyObject]? = try managedObjectContext.fetch(request)
// 对提取结果进行遍历
for user:User in results as! [User]{
// 更改实体的用户名属性
user.userName = "Peler"
}
// 保存编辑后的操作
try managedObjectContext.save()
// 重新提取编辑后的数据
let results2:[AnyObject]? = try managedObjectContext.fetch(request)
// 重新遍历提取结果
for user:User in results2 as! [User]{
print("userName=\(String(describing: user.userName))")
print("password=\(String(describing: user.password))")
}
} catch{
print("Failed to fetch data.")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}