CoreDataSwagger
为CoreData提供统一堆栈,具有配置选项和对常见操作的简化接口。
统一堆栈
使用更简单的接口来处理CoreData实现的各个组件,而不是处理分散的各个部分。
想要从主bundle中的所有模型合并而成的管理对象模型?以及使用该模型的单个内存存储的持久化存储协调器?以及使用私有队列并发对该协调器进行操作的管理对象上下文?炸裂!
var stack = CoreDataStack()
想要使用特定模型和存储元数据的对象管理模型?您有两个不同的存储和需要主队列并发?只需要几行Swagger代码。
let modelSource = CoreDataModelSource(models: [modelOne, modelTwo], metadata: metadata)
let inMemoryStore = CoreDataStoreParameters()
let sqliteStore = CoreDataStoreParameters.SQLite(URL: storeURL, configuration: "Custom", options: nil)
let configuration = CoreDataStackConfiguration(concurrency: .MainQueueConcurrencyType, modelSource: modelSource, storeParameters: [inMemoryStore, sqliteStore])
var stack = CoreDataStack(configuration: configuration)
简单的获取结果
您不再需要提供错误指针来获取获取错误(目前尚未解决 - 已向Apple提交问题)。您只需使用或忽略从获取中返回的元组中的错误值。返回值是互斥的,因此您将获得结果集或错误,但不会同时获得两者或两者都不获得。
func fetch(request: NSFetchRequest) -> CoreDataObjectFetchResults
func fetchIDs(request: NSFetchRequest) -> CoreDataObjectIDFetchResults
func fetchDictionaries(request: NSFetchRequest) -> CoreDataDictionaryFetchResults
func count(request: NSFetchRequest) -> CoreDataCountFetchResults
func fetch(entityName: String) -> CoreDataObjectFetchResults
func fetch(entityDescription: NSEntityDescription) -> CoreDataObjectFetchResults
以下使用了以下类型别名:
typealias CoreDataObjectFetchResults = ([NSManagedObject]?, NSError?)
typealias CoreDataObjectIDFetchResults = ([NSManagedObjectID]?, NSError?)
typealias CoreDataDictionaryFetchResults = ([AnyObject]?, NSError?)
typealias CoreDataCountFetchResults = (UInt?, NSError?)
更简单的保存、执行块和等待
将更改保存到管理对象上下文与以往一样简单,但现在无需提供错误指针。另外,您还可以向 save() 方法提供一个闭包,该闭包将在执行 performBlockAndWait() 同步块之前执行,并将返回成功标志和可选的错误信息。
func save(closure: CoreDataPerformClosure? = nil) -> (Bool, NSError?)
(let success, let error) = stack.save()
(let success, let error) = stack.save() {
managedObject.property = "new value"
}
实体和属性检索
从栈的更严格类型的界面中查找实体及其属性
var entities: [NSEntityDescription]
var entitiesByName: [String:NSEntityDescription]
func entity(named name: String) -> NSEntityDescription?
func propertiesForEntity(named entityName: String) -> [NSPropertyDescription]?
func propertiesByNameForEntity(named entityName: String) -> [String:NSPropertyDescription]?
或者在栈的管理对象模型中查找与您的自定义类相关联的实体和属性
class func entity(inStack stack: CoreDataStack) -> NSEntityDescription?
class func properties(inStack stack: CoreDataStack) -> [NSPropertyDescription]?
class func propertiesByName(inStack stack: CoreDataStack) -> [String:NSPropertyDescription]?
对象删除
使用栈的灵活界面删除对象非常简单
func delete(objects: NSManagedObject...)
func delete(objects: [NSManagedObject])
func delete(identifiers: NSManagedObjectID...)
func delete(identifiers: [NSManagedObjectID])
func delete(fetchRequest: NSFetchRequest)
查询结果控制器子脚本
到 objectAtIndexPath
的快捷方式
subscript(item: Int) -> NSManagedObject
(适用于单节结果集)subscript(indexPath: NSIndexPath) -> NSManagedObject