NSManagedObject и CoreData в быстром 3 Xcode 8

Я использую Xcode 8 и swift 3, я создаю NSManagedObject для своего объекта из меню редактора, NSManageObjectModel, как использовать этот файл для выборки и создания объекта, в Xcode 7 я использую стек основных данных для создания объекта управления, постоянного магазин и ,... . теперь я не знаю, как использовать основные данные в Swift 3.


person ava    schedule 01.11.2016    source источник


Ответы (1)


Этот приведенный ниже код основных данных в Swift 3 отлично работает с использованием x code 8 и более поздних версий, а также цель развертывания может быть низкой для IOS 8 и более поздних версий, после того как вы попробуете это. Пошагово я написал код.

1) импортировать Coredata в appdelegate

          import UIKit
          import CoreData


        @UIApplicationMain
    class AppDelegate: UIResponder, UIApplicationDelegate 
              var window: UIWindow?
  1. В этом коде, добавленном в appdelegate, только если coredata работает во всех версиях ОС, вам нужен этот код

    private lazy var applicationDocumentsDirectory: URL = {
      let urls = FileManager.default.urls(for: .documentDirectory, in:
                                      .userDomainMask)
    
     return urls[urls.count-1]
     }()
     //   Core Data stack
    
    
    lazy var managedObjectModel: NSManagedObjectModel = {
    let modelURL = Bundle.main.url(forResource: "Coredata", withExtension: "momd")!
    return NSManagedObjectModel(contentsOf: modelURL)!
    }()
    lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator = {
    let coordinator = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
    let url = self.applicationDocumentsDirectory.appendingPathComponent("SingleViewCoreData.sqlite")
    var failureReason = "There was an error creating or loading the application's saved data."
    do {
        try coordinator.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: url, options: nil)
    } catch {
        var dict = [String: AnyObject]()
        dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data" as AnyObject?
        dict[NSLocalizedFailureReasonErrorKey] = failureReason as AnyObject?
        dict[NSUnderlyingErrorKey] = error as NSError
        let wrappedError = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict)
        NSLog("Unresolved error \(wrappedError), \(wrappedError.userInfo)")
        abort()
      }
       return coordinator
       }()
    
      lazy var managedObjectContext: NSManagedObjectContext = {
      let coordinator = self.persistentStoreCoordinator
      var managedObjectContext = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)
      managedObjectContext.persistentStoreCoordinator = coordinator
      return managedObjectContext
      }()
     //   Core Data Saving support
         func saveContext () {
         if managedObjectContext.hasChanges {
        do {
            try managedObjectContext.save()
        } catch {
            let nserror = error as NSError
            NSLog("Unresolved error \(nserror), \(nserror.userInfo)")
            abort()
         }
        }
       }
    

    3. Сохраните данные, это то, что вам нужно, чтобы сохранить данные в базе данных, затем вы пишете этот код ниже. Это напишите в классе ViewControllers, просто снова импортируйте основные данные и создайте NSManagedObject.

          var dataBase = [NSManagedObject]()
    
    
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        let managedContext = appDelegate.managedObjectContext
        let entity =  NSEntityDescription.entity(forEntityName:
    
       "YourEntityName",in:managedContext)
        let activityData = NSManagedObject(entity: entity!,insertInto:
        managedContext)
        activityData.setValue(storeData1, forKey: "attributeKey1")
        activityData.setValue(storeData2, forKey: "attributeKey2")
    
        do {
            try managedContext.save()
            dataBase.append(activityData)
    
    
        } catch let error as NSError  {
            print("Could not save \(error), \(error.userInfo)")
        }
    
    }
    

    4. В каком классе вы получаете данные, а затем пишете этот код. Здесь также просто

    import coredata and create NSMangedObject
    
       var getData= [NSManagedObject]()
    

    // Функция получения данных getLogsData() {

    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    let managedContext = appDelegate.managedObjectContext
    let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "YourEntityName")
    
    do {
        let results = try managedContext.fetch(fetchRequest)
    
         } catch let error as NSError {
        print("Could not fetch \(error), \(error.userInfo)")
    }
    

    }

person Gangireddy Rami Reddy    schedule 25.03.2017