CoreDataContext是用Swift编写的Cocoa Touch框架,旨在允许快速集成Core Data到iOS项目中,并方便地在定义的实体上进行数据操作。
这个发布版本为库带来了改进
CoreDataContext完全用Swift实现,作为Cocoa Touch Framework Library分发,也可以通过CocoaPods使用。
Cocoa Touch Frameworks需要最低部署目标为iOS 8。如果您需要支持iOS 7的项目,您需要将源代码直接包含在您的项目中。
CoreDataContext打包为Xcode项目,包含两个目标:1. CoreDataContext_iOS:一个Cocoa Touch Framework,用于与iOS项目链接。2. CoreDataCOntext_OSX:一个Cocoa框架,用于与OS X项目链接。
您可以将代码下载或克隆到项目中,或者将此仓库作为子模块克隆,然后根据所需平台将框架作为链接的二进制文件添加到应用程序的目标中。
将以下文件添加到您的源中
CoreDataContext 提供了非常简单的 API 来与您的 Core Data 模型实体交互。首先您需要从 BaseDataContext 扩展,它包含与 NSManagedObjectContext 的所有交互。使用它的超初始化器设置模型的名称。通过使用通用的 EntityDataSource 类声明访问您的实体的属性,并用实体和键字段名称初始化它们,如下面的 Sample Project 模板所示
class NotesContext: BaseDataContext {
//
// MARK: - Entity Data Source Properties
var categories: EntityDataSource<Category, NSNumber>!
var notes: EntityDataSource<Note, NSString>!
//
// MARK: - Initializers
init() {
super.init(resourceName: "Notes")
if let moc = self.managedObjectContext {
self.categories = EntityDataSource(managedObjectContext: moc,
entityName: "Category",
entityKeyName: "categoryId",
entityKeyGeneration: PrimaryKeyGeneration.AutoNumber);
self.notes = EntityDataSource(managedObjectContext: moc,
entityName: "Note",
entityKeyName: "noteId",
entityKeyGeneration: PrimaryKeyGeneration.UUID);
}
}
}
可选地,您可以将数据上下文设置为 Singleton,添加属性
//
// MARK: - Singleton
class var sharedInstance: NotesContext {
struct Singleton {
static var instance: NotesContext?
static var token: dispatch_once_t = 0
}
dispatch_once(&Singleton.token) {
Singleton.instance = NotesContext()
}
return Singleton.instance!
}
确保适当地替换类型。以下几点需要注意
检查 EntityDataSource.swift 的源代码以查看所有可用的方法。以下是简短列表
NotesApp 项是一个使用 CoreDataContext 提供简单模型管理的非常简单的笔记移动端应用。您可以从其 GitHub 仓库 查看并下载 Sample 项目代码。
此库不是线程安全的。最好将其作为 Singleton 运行。其主要目标是为无复杂 Core Data 模型的简单和简单的项目服务。
感谢您使用 CoreDataContext。如果您喜欢此 API,请贡献并帮助我们在 Swift 的强大功能下创建更大的更完整的 Core Data API!欢迎 Fork 此存储库并发起您的 Pull Requests。