我使用Xcode 8和swift 3,我从编辑器菜单,NSManageObjectModel中为我的实体创建NSManagedObject,如何使用这个文件来获取和创建对象,在Xcode 7中我使用核心数据堆栈来创建管理对象,持久存储和... .现在我不知道如何在swift 3中使用core data。
这个下面的核心数据代码在swift 3中使用x code 8和更高版本工作良好,并且部署目标可以低IOS 8和更高版本工作一次尝试。我一步一步地写代码。
在appdelegate中导入Coredata
import UIKit
import CoreData
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate
var window: UIWindow?
在appdelegate中添加的代码中,只有当coredata在所有版本的os中工作时,你才需要这个代码
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类只是再次导入coredata并创建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。在你获取数据的课程中,你写这个代码,这里也是一样的Way just
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)") }
}