Я использую Xcode 8 и swift 3, я создаю NSManagedObject для своего объекта из меню редактора, NSManageObjectModel, как использовать этот файл для выборки и создания объекта, в Xcode 7 я использую стек основных данных для создания объекта управления, постоянного магазин и ,... . теперь я не знаю, как использовать основные данные в Swift 3.
NSManagedObject и CoreData в быстром 3 Xcode 8
Ответы (1)
Этот приведенный ниже код основных данных в Swift 3 отлично работает с использованием x code 8 и более поздних версий, а также цель развертывания может быть низкой для IOS 8 и более поздних версий, после того как вы попробуете это. Пошагово я написал код.
1) импортировать Coredata в appdelegate
import UIKit
import CoreData
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate
var window: UIWindow?
В этом коде, добавленном в 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