Wednesday, 23 January 2019

CoreData-1: Insert & Fetch request from AppDelegate raywenderlich

Def -


STEP-1 Create new Project and check 'Use Core Data'

STEP-2  Go to 'app_name.xcdatamodeld' file.

STEP-3 Create entity 'Device' and two field 'name' & 'deviceType'



STEP-4 Here, Your code in AppDeletegate

=======================================================

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        
        addTestData()
        
        let context =  self.persistentContainer.viewContext
        let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Device")
        request.returnsObjectsAsFaults = false
        
        do{
            let results = try context.fetch(request)
            for result in results as! [NSManagedObject]{
                if let deviceType = result.value(forKey: "deviceType") as? String, let name = result.value(forKey: "name") as? String{
                    print("Got \(deviceType) named \(name)")
                }
            }
        }catch{
            
        }
        
        return true
    }

    
    func addTestData()  {
        let context =  self.persistentContainer.viewContext
        guard let entity = NSEntityDescription.entity(forEntityName: "Device", in: context) else {
            fatalError("Could  not find entity")
        }
        
        for i in 1...25{
            let device = NSManagedObject(entity: entity, insertInto: context)
            
            device.setValue("Some Device #\(i)", forKey: "name")
            device.setValue(i%3 == 0 ? "watch" : "iphone", forKey: "deviceType")
        }

    }
=======================================================

22