swift4--创建CoreData实体,以及对数据的增删改查

//这是插入数据的方法
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.
    }


}

猜你喜欢

转载自blog.csdn.net/weixin_41735943/article/details/81254232